条件分支

条件分支

if-else-fi
[root@node1 test]# vim if.sh
#!/bin/bash
amswer=30
if [ $1 -gt $answer ];then
	echo "对不起,您猜大了!"
elif [ $ -lt $answer ];then
	echo "对不起,您猜小了!"
else
	echo "恭喜您,猜对了!"
fi
[root@node1 test]# chmod +x if.sh
[root@node1 test]# ./if.sh
case
[root@node1 test]# vim case.sh
#!/bin/bash
read -p "please input a number[1,7]:" num
case $num in 
1)
	echo "Mon"
	exit 0
2)
	echo"Tue"
	exit 0
;;
3)
	echo"Wen"
	exit 0
;;
4)
	echo"The"
	exit 0
;;
5)
	echo"Fri"
	exit 0
;;
[6-7])
	echo"Weekend"
	exit 0
;;
*)
	echo"number must in [1,7]"
	exit 1
;;
esac
[root@node1 test]# chmod +x case.sh
[root@node1 test]# ./case.sh
please input a number[1,7]: 5
Fri

while循环
while [ condition ] ; do
命令
done

或者

while [ condition ] 
do
命令
done
# 案例一:每个两秒打印系统负载情况
[root@node1 test]# vim while1.sh
#!/bin/bash
while true
do 
	uptime  #系统负载情况
	sleep 2  # 休眠2秒
done
[root@node1 test]# chmod +x while1.sh
[root@node1 test]# ./while1.sh
16:45:21 up 6:15, 1 user, loda average: 0.00, 0.01, 0.05
16:45:21 up 6:15, 1 user, loda average: 0.00, 0.01, 0.05
16:45:21 up 6:15, 1 user, loda average: 0.00, 0.01, 0.05
案例二:计算1-100的累加和
[root@node1 test]# vim while2.sh
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ] ; do
	sum=$((sum+i))
	i=$((i+1))
done
	echo "1+2+3+...+100=$sum"
[root@node1 test]# chmod +x while2.sh
[root@node1 test]# ./while2.sh
1+2+3+...+100=5050
或者
[root@node1 test]# vim while3.sh
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ] ; do
	let sum=$sum+$i
	let i=$i+1
done
	echo "1+2+3+...+100=$sum"
[root@node1 test]# chmod +x while3.sh
[root@node1 test]# ./while3.sh
1+2+3+...+100=5050
for循环
for...do...done循环
-语法
for 变量名 in 变量取值列表
do
命令
done

提示:在此结构中”in变量取值列表“可省略,省略时相当于使用for i in "$@"
#!/bin/bash
for num in 1 2 3 4    #  for num in {1..4}
do
	echo $num
done	

使用seq -s 分隔符 起始 步长 终点

[root@node1 ~]# seq -s " " 1 1 5
1 2 3 4 5
[root@node1 ~]# seq -s "|" 1 2 10
1|3|5|7|9
#!/bin/bash
for i in `seq -s " " 1 2 10`
do
echo $i
done
# 输出结果为:1 3 5 7 9
# 输出指定路径的最大文件
#!/bin/bash
oldIFS=$IFS
IFS=$'\n'
for item in `du -a $1|sort -nr`
do
	fullName=`echo $item|awk{print $2}`
	if [ -f $fullName ];then
		echo "the max file is:$fullName"
		break
	fi
done
IFS=$oldIFS

循环中递增计数器用于计行数:

#!/bin/bash
oldIFS=$IFS
IFS=$'\n'
num=0
for item in `cat $1`
do
	echo $item
	((num++))
done
echo "line number is:$num"
IFS=$oldIFS
上一篇:done 活久见美国航空白人毫无技术的面试


下一篇:UGUI和现实世界的比例关系