1.条件判断
(1)基本语法
[ condition ](注意 condition 前后要有空格)
#非空返回 true,可使用$?验证(0 为 true,>1 为 false)
(2)基本使用
[ shell ] 返回 true
[] 返回false
[ condition ] && echo OK || echo NotOK 条件满足,打印OK,否则打印NotOK
(3)常用判断条件
- 两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于 - 按照文件权限进行判断
-r 有读的权限 [ -r 文件 ]
-w 有写的权限
-x 有执行的权限 - 按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
(4)应用实例
- “ok"是否等于"ok”
- 23 是否大于等于 22
- /root/install.log 目录中的文件是否存在
- 判断文件
judeg.sh
是否有执行的权限
2.流程控制
(1)if判断
- 基本语法
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [条件判断式]
then
程序
fi
注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格 (2) 推荐使用第二种方式
- 应用实例
编写一个 shell 程序,如果输入的参数,大于等于 60,则输出 “及格了”,如果小于 60,
则输出 “不及格”
(2)case语句
- 基本语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
…省略其他分支…
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
- 应用实例
当命令行参数是 1 时,输出 “周一”, 是 2 时,就输出"周二", 其它情况输出 “other”
(3)for循环
- 基本语法
for 变量 in 值 1 值 2 值 3…
do
程序
done
或者
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
- 应用实例
1)打印命令行输入的参数 【会使用到$* $@】
运行结果:
从这里能看出 $* 是把输入参数当做一个整体,而$@是把输入参数独立处理
2)把从 1 加到 100 的值输出显示
(4)while循环
- 基本语法
while [ 条件判断式 ]
do
程序
done
- 应用实例
从命令行输入一个数 n,统计从 1+…+ n 的值是多少?
注意:while后要有空格