首页 技术 正文
技术 2022年11月16日
0 收藏 539 点赞 3,477 浏览 3841 个字

个人博客网: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

[root@rich datas]# [ 23 -ge 22 ]
[root@rich datas]# echo $?
0

Shell脚本 (三) 条件判断 与 流程控制

  • echo $? 返回的是0,说明上一个正确执行了
[root@rich datas]# [ 23 -le 22 ]
[root@rich datas]# echo $?
1

Shell脚本 (三) 条件判断 与 流程控制

  • echo $? 返回的非0,说明上一个执行失败了

(2)helloworld.sh 是否具有写权限

[root@rich datas]# [ -w helloworld.sh ]
[root@rich datas]# echo $?
0

Shell脚本 (三) 条件判断 与 流程控制

(3)/home/wenmin/cls.txt 目录中的文件是否存在

[root@rich datas]# [ -e /home/wenmin/cls.txt ]
[root@rich datas]# echo $?
1

Shell脚本 (三) 条件判断 与 流程控制

  • 执行echo $? 返回不为0,说明文件不存在
[root@rich wenmin]# [ -e /home/wenmin/wenxing.txt ]
[root@rich wenmin]# echo $?
0

Shell脚本 (三) 条件判断 与 流程控制

  • 执行echo $? 返回为0,说明文件存在

(4)多条件判断(&& 表示前一条命令执行成功时,才执行后一条命令, || 表示上一条命令执行失败后,才执行下一条命令)

[root@rich datas]# [ condition ] && echo OK || echo notok
OK

Shell脚本 (三) 条件判断 与 流程控制

  • 先执行 运算式,返回为true, 再执行 echo OK ,打印 OK ; 由于当前判断使用短路或,左边为true时,右边不执行
[root@rich datas]# [ condition ] && [ ] || echo notok
notok

Shell脚本 (三) 条件判断 与 流程控制

  • 先执行 运算式,返回为true, 再执行 [ ] ,运算式为空,返回false ; 由于当前判断使用短路或,左边为false时,右边执行打印,结果为 notok

七、流程控制(重点)

1、 if 判断

1.1 基本语法

 if[ 条件判断式 ];then    程序 fi 或者 if [ 条件判断式 ]   then      程序 fi

Shell脚本 (三) 条件判断 与 流程控制

注意事项:

(1) [ 条件判断式 ],中括号和条件判断式之间必须有空格

(2) if 后要有空格

1.2 案例实操

(1) 输入一个数字,如果是1,则输出 wenminzuimei,如果是2,则输出 cls zhenmei ,如果是其他,什么也不输出。

[root@rich datas]# touch if.sh
[root@rich datas]# vim if.sh #!/bin/bash
if [ $1 -eq 1 ];then
echo "wenmin zhen mei"
elif [ $1 -eq 2 ]
then
echo "cls zhen mei"
fi

Shell脚本 (三) 条件判断 与 流程控制

执行shell脚本:

[root@rich datas]# bash if.sh
if.sh: 第 2 行:[: -eq: 期待一元表达式
if.sh: 第 4 行:[: -eq: 期待一元表达式
[root@rich datas]# bash if.sh 1
wenmin zhen mei
[root@rich datas]# bash if.sh 2
cls zhen mei
[root@rich datas]# bash if.sh 3
[root@rich datas]#

Shell脚本 (三) 条件判断 与 流程控制

  • 有执行结果可知,在 if 条件判断式中,需输入对应的参数,不然无法返回结果;当输入参数 1 时, 返回的是 “-eq 1 “所对应的参数;当输入参数 2 时, 返回的是 “-eq 2 “所对应的参数;当输入参数 3 时, 没有对应的 if 条件,所以没有返回值。

2、 case 语句

2.1 基本语法

 case  $变量名 in    “值 1”)      如果变量的值等于值1,则执行程序 1      ;;    “值 2”)      如果变量的值等于值2,则执行程序2      ;;    ...省略其他分支......     *)
如果变量的值都不是以上的值,则执行此程序
;;
esac

Shell脚本 (三) 条件判断 与 流程控制

注意事项:

(1) case 行尾必须为单词“in”,每一个模式匹配必须以左括号“)”结束

(2)双分号 “;;”表示命令序列结束,相当于java中的break;

(3)最后的 “*)” 表示默认模式,相当于java中的default.

2.2 案例实操

(1) 输入一个数字,如果是1,则输出wenmin,如果是2,则输出 cls ,如果是其他,输出 danlian。

[root@rich datas]# touch case.sh
[root@rich datas]# vim case.sh#!/bin/bashcase $1 in
1)
echo "wenmin"
;;
2)
echo "cls"
;;
*)
echo "danlian"
;;
esac

Shell脚本 (三) 条件判断 与 流程控制

执行 case.sh 脚本:

[root@rich datas]# bash case.sh 1
wenmin
[root@rich datas]# bash case.sh 2
cls
[root@rich datas]# bash case.sh 3
danlian
[root@rich datas]# bash case.sh 4
danlian

Shell脚本 (三) 条件判断 与 流程控制

输入参数为1,返回 “wenmin”;输入参数为2,返回“cls”;输入参数为3或其他,返回“danlian”.

3、for 循环

3.1 基本语法1

  for(( 初始值;循环控制条件;变量变化 ))      do        程序      done

Shell脚本 (三) 条件判断 与 流程控制

3.2 案例实操

(1) 从1加到100

[root@rich datas]# touch for.sh
[root@rich datas]# vim for.sh #!/bin/bashs=0;
for((i=1;i<=100;i++))
do
s=$[$s+$i]
doneecho $s

Shell脚本 (三) 条件判断 与 流程控制

执行 for.sh 脚本

[root@rich datas]# bash for.sh
5050

Shell脚本 (三) 条件判断 与 流程控制

3.3 基本语法2

   for 变量 in 值 1 值 2 值 3 ....      do          程序      done

Shell脚本 (三) 条件判断 与 流程控制

3.4 案例实操

(1)打印所有输入参数

[root@rich datas]# touch for2.sh
[root@rich datas]# vim for2.sh #!/bin/bash
#打印数字for i in $*
do
echo "wenmin xihuan $i"
done

Shell脚本 (三) 条件判断 与 流程控制

[root@rich datas]# bash for2.sh mm
wenmin xihuan mm
[root@rich datas]# bash for2.sh mm cls
wenmin xihuan mm
wenmin xihuan cls
[root@rich datas]# bash for2.sh mm cls xuewen
wenmin xihuan mm
wenmin xihuan cls
wenmin xihuan xuewen

Shell脚本 (三) 条件判断 与 流程控制

  • 将所有参数一次一个的赋予 i  ,并逐个打印出来。

#!/bin/bash
#打印数字for i in $*
do
echo "wenmin xihuan $i"
donefor j in $@
do
echo "wenmin xihuan $j"
done
~

Shell脚本 (三) 条件判断 与 流程控制

[root@rich datas]# bash for2.sh mm cls xuewen shaopei
wenmin xihuan mm
wenmin xihuan cls
wenmin xihuan xuewen
wenmin xihuan shaopei
wenmin xihuan mm
wenmin xihuan cls
wenmin xihuan xuewen
wenmin xihuan shaopei

Shell脚本 (三) 条件判断 与 流程控制

  • 将所有参数一次一个的赋予 i 或 j ,并逐个打印出来。

#!/bin/bash
#打印数字for i in "$*"
do
echo "wenmin xihuan $i"
donefor j in "$@"
do
echo "wenmin xihuan $j"
done

Shell脚本 (三) 条件判断 与 流程控制

[root@rich datas]# bash for2.sh mm cls xuewen shaopei
wenmin xihuan mm cls xuewen shaopei
wenmin xihuan mm
wenmin xihuan cls
wenmin xihuan xuewen
wenmin xihuan shaopei

Shell脚本 (三) 条件判断 与 流程控制

  • “$*”将所有参数一次性赋予 i ,并一次性打印出来; “$@”将所有参数循环一次一个的赋予 j ,并逐个打印出来。

4、while 循环

4.1 基本语法

while [ 条件判断式 ]    do       程序    done

Shell脚本 (三) 条件判断 与 流程控制

4.2 案例实操

(1) 从1 加到100

[root@rich datas]# touch while.sh
[root@rich datas]# vim while.sh #!/bin/bashs=0
i=1
while [ $i -le 100 ]
do
s=$[$s + $i]
i=$[$i + 1]
done

Shell脚本 (三) 条件判断 与 流程控制

脚本中,$i 代表的是变量的值;判断语句  “ [ ] ”需要加空格,算数表达式 “ [ ] ”不需要加空格。

执行脚

[root@rich datas]# bash while.sh
5050

Shell脚本 (三) 条件判断 与 流程控制

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893