Shell条件判断流程控制
判断语句
基本语法
[ condition ](注意 condition 前后要有空格)
#非空返回 true,可使用$?验证(0 为 true,>1 为 false)
应用实例
[ hadoop ] 返回 true
[ ] 返回 false
[ condition ] && echo OK || echo notok 条件满足,执行后面的语句
判断语句
常用判断条件
- = 字符串比较
- 两个整数的比较
-lt 小于
-le 小于等于 little equal
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等 - 按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限 - 按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
应用实例
案例 1:“ok"是否等于"ok”
判断语句:使用 =
案例 2:23 是否大于等于 22
判断语句:使用 -ge
案例 3:/home/oper.sh 目录中的文件是否存在
判断语句: 使用 -f
if 判断
基本语法
if [ 条件判断式 ]
then
代码
fi
或者 , 多分支
if [ 条件判断式 ]
then
代码
elif [条件判断式]
then
代码
fi
注意事项:[ 条件判断式 ],中括号和条件判断式之间必须有空格
案例:请编写一个 shell 程序,如果输入的参数,大于等于 60,则输出 “及格了”,如果小于 60,则输出 “不及格”
case 语句
基本语法
case $变量名 in
“值 1”)
如果变量的值等于值 1,则执行程序 1
;;
“值 2”)
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
案例 :当命令行参数是 1 时,输出 “周一”, 是 2 时,就输出"周二", 其它情况输出 “other”
for 循环
基本语法 1
for 变量 in 值 1 值 2 值 3…
do
程序/代码
done
基本语法 2
for (( 初始值;循环控制条件;变量变化 )
do
程序/代码
done
案例 1 :打印命令行输入的参数 [这里可以看出$* 和 $@ 的区别]
案例 2 :从 1 加到 100 的值输出
while 循环
基本语法 1
while [ 条件判断式 ]
do
程序 /代码
done
注意:while 和 [有空格,条件判断式和 ]也有空格
案例 :从命令行输入一个数 n,统计从 1+…+ n 的值是多少
read 读取控制台输入
基本语法
read(选项)(参数)
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。
参数
变量:指定读取值的变量名
案例 1:读取控制台输入一个 NUM1 值
案例 2:读取控制台输入一个 NUM2 值,在 10 秒内输入