shell中的case判断
格式
case 变量名 in
value1)
command
;;
value2)
command
;;
*)
commond
;;
esac
在case程序中,可以在条件中使用|,表示或的意思, 比如2|3表示valuel可以是2也可以是3
案例:
#!/bin/bash
read -p "Please input a number: " n #输入一个数字赋值给n。
if [ -z "$n" ] #如果变量n为空
then
echo "Please input a number." #显示“请输入一个数字”
exit 1 #退出脚本
fi
n1=`echo $n|sed 's/[0-9]//g'` #给n1赋值“删除变量n中全部数字
if [ -n "$n1" ] #如果变量n1不为空(就是包含数字以外的东西)
then #就
echo "Please input a number." #显示“请输入一个数字”
exit 1 #退出脚本
fi
if [ $n -lt 60 ] && [ $n -ge 0 ] #如果变量n小于60且大于等于0
then #就
tag=1 #给变量tag赋值为1
elif [ $n -ge 60 ] && [ $n -lt 80 ] #否则判断是否大于等于60且小于80
then #如果是
tag=2 #给变量tag赋值为2
elif [ $n -ge 80 ] && [ $n -lt 90 ] #否则判断是否大于等于80且小于90
then #如果是
tag=3 #给变量tag赋值为3
elif [ $n -ge 90 ] && [ $n -le 100 ] #否则判断是否大于等于90且小于等于100
then #如果是
tag=4 #给变量tag赋值为4
else #否则
tag=0 #给变量tag赋值为0
fi
case $tag in
1) #变量tag的值为1
echo "not ok" #显示not ok
;;
2) #变量tag的值为2
echo "ok" #显示ok
;;
3)
echo "ook"
;;
4)
echo "oook"
;;
*) #除了以上情况外
echo "The number range is 0-100." #显示数字的范围是0-100
;;
esac
shell中的for循环
语法: for 变量名 in 条件; do (命令); done #满足in后的条件退出,否则重复执行do后的命令。
#!/bin/bash
sum=0
for i in `seq 1 100` #记数命令:seq 起点 步长 终点(从起点数到终点,按步长记数。默认为1)
do
sum=$[$sum+$i] #为sum赋值从0累加1至100
echo $i #显示变量i的值
done
echo $sum
文件列表循环
#!/bin/bash
cd /etc/
for a in `ls /etc/`
do
if [ -d $a ]
then
ls -d $a
fi
done
shell中的while循环
语法 while 条件; do … ; done 案例1
#!/bin/bash while : do load=w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1
if [ $load -gt 10 ] then top|mail -s "load is high: $load" asldkfls@11.com fi sleep 30 done
案例2 #!/bin/bash while : do read -p "Please input a number: " n if [ -z "$n" ] then echo "you need input sth." continue fi n1=echo $n|sed 's/[0-9]//g'
if [ -n "$n1" ] then echo "you just only input numbers." continue fi break done echo $n