20.7 if特殊用法
20.8 case判断(上)
20.9 case判断(下)
20.10 for循环
20.11 while循环(上)
20.12 while循环(下)
20.13 break跳出循环
20.14 continue结束本次循环
20.15 exit退出整个脚本
20.7 if特殊用法
if [ -z "$a" ] 这个表示当变量a的值为空时会怎么样
if [ -n "$a" ] 表示当变量a的值不为空
if grep -q '123' 1.txt; then 表示如果1.txt中含有'123'的行时会怎么样
if [ ! -e file ]; then 表示文件不存在时会怎么样
if (($a<1)); then …等同于 if [ $a -lt 1 ]; then…
[ ] 中不能使用<,>,==,!=,>=,<=这样的符号
举例:
脚本过程注意空格
tmp下没有666这个文件
20.8 case判断(上)
Case和if类似
Commond,除此之外
举例:
#!/bin/bash
read -p "Please input a number: " n ---让用户输入数字,返回值为n
if [ -z "$n" ] --返回的n值进行判断
then
echo "Please input a number." --提示请输入值
exit 1 --当用户运行完脚本运行echo$? 的时候会返回1
fi
n1=`echo $n|sed 's/[0-9]//g'` --输出是否为纯数字,如果是数字,则清空,赋值给$n1,
if [ -n "$n1" ] --判断$n1是否为空(即$n1不是纯数字),
then
echo "Please input a number." --为空再次提示输入数字
exit 1 --退出
fi
if [ $n -lt 60 ]&& [ $n -ge 0 ] ---当数值小于60 且大于等于0 提示tag1
then
tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ] ---当数值大于等于60并且小于80 提示tag2
then
tag=2
elif [ $n -ge 80 ] && [ $n -lt 90 ] ---当数值大于等于80且小于90 提示tag3
then
tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ] ---当数值大于等于90且小于100 提示tag4
then
tag=4
else ---如果不符合上述条件则tag=0
tag=0
fi
case $tag in --当你的tag值为1/2/3/4、的时候执行如下
1)
echo "not ok" ---tag1提示not ok
;;
2)
echo "ok" --tag2提示 ok
;;
3)
echo "ook" -tag3提示 ook
;;
4)
echo "oook" ---tag4提示 oook
;;
*) --除此之外的执行tag=0
echo "The number range is 0-100." --提示重新输入数值范围为0-100
;;
esac
测试:
20.10 for循环
语法:for 变量名 in 条件; do …; done
例如:计算1-100的值
#!/bin/bash
sum=0
for i in `seq 1 100`
do
sum=$[$sum+$i]
done
echo $sum
例如:文件列表循环
#!/bin/bash
cd /etc/ //优先进入etc下
for a in `ls /etc/`
do
if [ -d $a ]
then
ls -d $a
fi
done
20.11 while循环(上)
结构如下
例如每隔半分钟检查一下系统的负载,当负载大于10的时候就发一封邮件,隔30 秒执行一次
#!/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
20.12 while循环(下)
案例2:加入continue,如果不是数字则继续循环,否则中断
#!/bin/bash
while :
do
read -p "请输入数字: " n
if [ -z "$n" ]
then
echo "请输入对应数值."
continue
fi
n1=`echo $n|sed 's/[0-9]//g'`
if [ -n "$n1" ]
then
echo "您只能输入数字."
continue
fi
break
done
echo $n
小技巧:LANG=zh_CN.UTF-8 改回中文显示
20.13 break跳出循环
例如执行到3就跳出循环
#!/bin/bash
for i in `seq 1 5`
do
echo $i
if [ $i == 3 ]
then
break
fi
echo $i
done
echo END
20.14 continue结束本次循环
将break改成continue
执行:
20.15 exit退出整个脚本
还是修改continue为exit
执行
扩展
select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html