shell脚本编程之条件语句

677 阅读2分钟

1、test 测试命令 两种形式如下:

1.1、test [操作符选项] 表达式

图片2.jpg

1.2、[ 操作符选项 表达式 ]  [ ]内两边要有空格

图片3.jpg

Tips:shell环境根据命令执行后的返回值($?),当返回值为0时,表示命令执行成功(或 表达式为true);返回值为非0时,表示失败(表达式为false)

1.3、文件测试操作符

-e   测试 指定的文件或者目录是否存在

-f   测试 指定的对象是否为文件;指定的文件是否存在

-d   测试 指定的对象是否为目录;指定的目录是否存在

-r   测试 当前用户是否有读权限

-w   测试 当前用户是否有写权限

-x   测试 当前用户是否有执行权限

-L   测试文件是否为符号链接(软链接文件)

例:[ -f /opt/abc.txt ]

2、shell中的整数值比较

整数值比较指的是给定的两个整数值,判断两者的关系:例如是否大于、等于、小于...

[ 整数变量1 操作符 整数变量2 ]

2.1、操作符

- -eq:第一个数等于(Equal)第二个数

- -ne:第一个数不等于(Not Equal)第二个数

- -gt:第一个数大于(Greater Than)第二个数

- -ge:第一个数大于或等于(Greater or Equal)第二个数

- -lt:第一个数小于(Lesser Than)第二个数

- -le:第一个数小于或等于(Lesser or Equal)第二个数

3、字符串的比较

3.1、常用操作符

- - =:字符串内容相同

- - !=:字符串内容不同,! 号表示相反的意思

- - -z:字符串内容为空

- - -n: 字符是否存在

格式:

[ "字符串1" = "字符串2" ]  或者  [ "字符串1" == "字符串2" ]

[ "字符串1" != "字符串2" ]

[ -z "字符串" ]    -z:判断字符串是否为空,或者 指定的变量是否为空值

[ -n "字符串" ]    -n:检查是否有字符串存在

3.2、浮点型数值的运算

1、 echo "浮点运算字符串" | bc

2、 awk 'BEGIN {print 浮点运算字符串}’

图片4.jpg

4、逻辑运算

- -a或 &:逻辑与,“而且”的意思全真才为真 前后条件都要成立

- -o或||:逻辑或,“或者”的意思一真即为真 只需前后条件中一个成立

- !:

[ 表达式1 ] && [ 表达式2 ]       等同于   [ 表达式1 -a 表达式2 ]    [[ 表达式1 && 表达式2 ]]

[ 表达式1 ] || [ 表达式2 ]       等同于   [ 表达式1 -o 表达式2 ]    [[ 表达式1 || 表达式2 ]]

5、三元运算符

java,c 环境:

条件表达式?a:b

当条件表达式为真时,取a值;当条件表达式为假时,取b值 Shell脚本:

[ 表达式 ] && a || b

当表达式成立 取a值:否则取b值

图片5.jpg

6、if条件语句

6.1、单分支

if [ 表达式 ];then

...

Fi

图片6.jpg

图片7.jpg

6.2、双分支

if [ 表达式 ];then

...

else

...

fi

图片8.jpg

图片9.jpg

6.3、多分支

if [ 表达式 ];then

...

elif [ 表达式 ];then

...

elif [ 表达式 ];then

...

[else]

fi

图片10.jpg

7、case 语句

case 变量 in

模式1)

....

;;

模式2)

....

;;

...

*)

....

esca

图片11.jpg

图片12.jpg