day12 bash中的if、for
bash
1 变量bash 2 定义:x=1 3 作用:记录状态 4 规则:字母开头,后面可以接字母、数字、下划线 5 export args:将变量定义为全局变量 6 $$[]:括号中可以进行简单的数学整数运算,可以用echo打印出输出的结果 7 (()):两个括号中可以进行逻辑运算 8 $?:查看上次命令执行结果,非零表示失败 9 ==:判断 10 !=:不等于 11 &&:逻辑与 12 ||:逻辑或 13 ((x+=1))/x=$[$x+1]:x+1的运算 14 expr 1 + 2:有空格,像当与1+2 15 echo 'scale=2;1/3'|bc -l:取1/3的两位小数 16 echo 'scale=2;1/3'|bc -l|cut -d'.' -f2:取两位小数,用.将它分割,取第二部分 17 test向当与[ ]有空格: 18 中间加 -a and 19 -o or 20 = 测试左右字符串是否为空 21 != 不等于 22 -eq 判断整数是否相等 23 -ne 不相等 24 -b 后面加文件名,判断文件是否存在且为块设备 25 -d 后面加文件名,判断文件是否为文件 26 -e 后面加文件名,判断文件是否为存在 27 -f 后面加文件名,判断文件是否为存在且为普通文件 28 -h 后面加文件名,判断文件是否为链接文件 29 30 31 前面加 -n 不为空即正确 32 -z 长度为零即为空 33
if判断
1 #!/bin/bash 2 read -d 'username: ' user 3 read -d 'paddword: ' password 4 5 if [ $user = 'alex' -a $password = 'alex' ];then 6 echo 'login successful' 7 fi
while循环
1 #!/bin/bash 2 3 oldboy_age=57 4 5 while : # :表示真 6 do 7 read -p 'age: ' age 8 9 if [ -z $age ] 10 then 11 echo 'None!!' 12 continue 13 fi 14 15 if [ $age -eq $oldboy_age ] 16 then 17 echo 'Done' 18 break 19 elif [ $age -lt $oldboy_age ] 20 then 21 echo 'Too young' 22 elif [ $age -gt $oldboy_age ] 23 then 24 echo 'Too old' 25 else 26 echo 'Wrong!!' 27 fi 28 done
for循环
1 for 循环形式 1 2 #!/bin/bash 3 4 for i in {1..5} 5 do 6 echo $i 7 done 8 9 ========================================================= 10 ping -c1 192.168.. ping 一次 11 ping -c1 192.168.. &> /dev/null 不在终端显示 12 tail -f /tmp/.. 动态查看地址 13 14 15 for i in $(ls) 16 do 17 # 依次打印出目录 18 done 19 ======================================================== 20 21 bash for 循环形式 2 22 #!/bin/bash 23 24 for ((i=1;i<=9;i++)) 25 do 26 echo $i 27 done 28 ======================================================= 29 打印格式 30 echo -n '' 不换行
检测IP
1 ping IP 2 #!/bin/bash 3 4 ip_head='192.168.16.' # 设置ip前面三位 5 6 for ((i=1;i<=20;i++)) # 循环20次,因为有点慢,所以循环少点 7 do # 循环开头标志 8 echo "$ip_head$i" # 将ip前面三位和i拼接起来 9 ping -c1 "$ip_head$i" &> /dev/null # ping IP,将打印结果丢弃 10 if [ $? -ne 0 ] # 查看上面ping的结果,是否成功 11 then # if判断开头的标志 12 echo 'sucessful' # 如果ping不通,则打印成功,表示可用 13 fi # if判断的结尾标志 14 done
99乘法表
#!/bin/bash for((i=1;i<=9;i++)) # 外循环9次 do for((j=1;j<=i;j++)) # 内循环为1-9次 do echo -n "$j*$i=$[j*i] " # 列式子,-n表示不回车,后面用空格分割 done echo done
模拟终端控制
1 #!/bin/bash 2 3 while : # :表示真 4 do 5 read -p '>>' cmd # 获取一个输入 6 if [[ -z $cmd ]] # 如果为空,执行下面then 7 then 8 continue # 进入下一次循环 9 elif [[ $cmd='quit' ]] # 如果cmd的值为quit 10 then 11 break # 跳出本次循环 12 fi 13 $cmd # 执行变量cmd里面的命令 14 done
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步