语法
1 2 3 4 5 6 7 8 |
#===========》Shell风格语法for 变量名 [ in 取值列表 ] do 循环体 done #===========》C语言风格语法for ((初值;条件;步长)) do 循环体 done |
shell风格的for,常用in列表方式
1 2 3 4 5 6 7 8 |
for i in 1 2 3 for i in {1,2,3} for i in {1..9} for i in {9..1} for i in {a..z} for i in {A..Z} for i in {X..Z} for i in $(命令) # 例如:for i in $(head -10 /etc/passwd);do echo $i|cut -d: - f1,2;done for i in $(find ...) |
continue与for
1 2 3 |
continue:默认退出本次循环 break:默认退出本层循环 |
shell风格的for
1 2 3 4 |
for i in {1..10} do echo $i done |
c语言风格的for
1 2 3 4 |
for ((i=1;i<=10;i++)) do echo $i done |
脚本计算1-100奇数和
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
方法1: #!/bin/bash # 计算1-100的奇数和 for i in {1..100..2} do let sum=$sum+$i done echo "1-100的奇数和是:$sum" 方法2: #!/bin/bash sum=0 for ((i=1;i<=100;i+=2)) do let sum=$i+$sum done echo "1-100的奇数和为:$sum" 方法3: sum=0 for ((i=1;i<=100;i++)) do if [ $[$i%2] -eq 0 ];then continue else let sum=$sum+$i fi done echo "1-100的奇数和为:$sum" |
判断所输整数是否为质数
1 2 3 4 5 6 7 8 9 10 11 12 13 |
质数:只能被1和它本身整除的数叫质数 #!/bin/bash read -p "请输入一个正整数字:" number [ $number -eq 1 ] && echo "$number不是质数" && exit [ $number -eq 2 ] && echo "$number是质数" && exit for i in `seq 2 $[$number-1]` do [ $[$number%$i] -eq 0 ] && echo "$number不是质数" && exit done echo "$number是质数" && exit |
局域网内脚本检查主机网络通讯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#!/bin/bash #定义变量 ip=10.1.1 #循环去ping主机的IP for ((i=1;i<=10;i++)) do { ping -c1 $ip.$i &>/dev/null if [ $? -eq 0 ];then echo "$ip.$i is ok" >> /tmp/ip_up.txt else echo "$ip.$i is down" >> /tmp/ip_down.txt fi }& done wait echo "ip is ok...." |
判断闰年
1 2 3 4 5 6 7 8 9 10 |
润年:能被4整除但不能被100整除,或能被400整除的年份即为闰年 #!/bin/bash read -p "Please input year:(2017)" year if [ $[$year%4] -eq 0 -a $[$year%100] -ne 0 ];then echo "$year is leap year" elif [ $[$year%400] -eq 0 ];then echo "$year is leap year" else echo "$year is not leap year" fi |