Shell脚本 (三) 条件判断 与 流程控制
个人博客网:https://wushaopei.github.io/ (你想要这里多有)
六、条件判断
1、基本语法
[ condition ](注意condition 前后要有空格)
注意:条件非空即为true,[ webcode ]返回true,[]返回false
2、常用判断条件
(1)两个整数之间比较
= 字符串比较
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt 大于(greater than)
-ge 大于等于(greater equal) -ne 不等于 (Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existene) -d 文件存在并是一个目录(directory)
3、案例实操
(1)23是否大于等于22
- echo $? 返回的是0,说明上一个正确执行了
- echo $? 返回的非0,说明上一个执行失败了
(2)helloworld.sh 是否具有写权限
(3)/home/wenmin/cls.txt 目录中的文件是否存在
- 执行echo $? 返回不为0,说明文件不存在
- 执行echo $? 返回为0,说明文件存在
(4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令, || 表示上一条命令执行失败后,才执行下一条命令)
- 先执行 运算式,返回为true, 再执行 echo OK ,打印 OK ; 由于当前判断使用短路或,左边为true时,右边不执行
- 先执行 运算式,返回为true, 再执行 [ ] ,运算式为空,返回false ; 由于当前判断使用短路或,左边为false时,右边执行打印,结果为 notok
七、流程控制(重点)
1、 if 判断
1.1 基本语法
注意事项:
(1) [ 条件判断式 ],中括号和条件判断式之间必须有空格
(2) if 后要有空格
1.2 案例实操
(1) 输入一个数字,如果是1,则输出 wenminzuimei,如果是2,则输出 cls zhenmei ,如果是其他,什么也不输出。
执行shell脚本:
- 有执行结果可知,在 if 条件判断式中,需输入对应的参数,不然无法返回结果;当输入参数 1 时, 返回的是 "-eq 1 "所对应的参数;当输入参数 2 时, 返回的是 "-eq 2 "所对应的参数;当输入参数 3 时, 没有对应的 if 条件,所以没有返回值。
2、 case 语句
2.1 基本语法
注意事项:
(1) case 行尾必须为单词“in”,每一个模式匹配必须以左括号“)”结束
(2)双分号 “;;”表示命令序列结束,相当于java中的break;
(3)最后的 “*)” 表示默认模式,相当于java中的default.
2.2 案例实操
(1) 输入一个数字,如果是1,则输出wenmin,如果是2,则输出 cls ,如果是其他,输出 danlian。
执行 case.sh 脚本:
输入参数为1,返回 “wenmin”;输入参数为2,返回“cls”;输入参数为3或其他,返回“danlian”.
3、for 循环
3.1 基本语法1
3.2 案例实操
(1) 从1加到100
执行 for.sh 脚本
3.3 基本语法2
3.4 案例实操
(1)打印所有输入参数
①
- 将所有参数一次一个的赋予 i ,并逐个打印出来。
②
- 将所有参数一次一个的赋予 i 或 j ,并逐个打印出来。
③
- “$*”将所有参数一次性赋予 i ,并一次性打印出来; “$@”将所有参数循环一次一个的赋予 j ,并逐个打印出来。
4、while 循环
4.1 基本语法
4.2 案例实操
(1) 从1 加到100
脚本中,$i 代表的是变量的值;判断语句 “ [ ] ”需要加空格,算数表达式 “ [ ] ”不需要加空格。
执行脚