天天看点

shell编程——条件测试和判断语句

1    条件测试的基本语法

当指定条件为真时,整个条件测试的返回值为0;反之,如果指定条件为假,则条件测试语句的返回值为0;反之,如果指定的条件为假,则条件测试语句的返回值为非0。

test expression

expression表示需要进行测试的条件表达式,可以由字符串 整数 文件名以及各种运算符组成。

[ expression ]

与test完全相同,值得注意的是,左方括号[ 是一个shell命令,而非条件表达式的一部分。命令与参数之间必须保留一个空格。

字符串测试

string    判断字符串是否为空

string1 = string2    判断是否相等

string2 != string2    判断是否不等

-n string    判断是否是非空串

-z string    判断是否是空串

在给变量赋值的时候,等号“=”左右两边一定不要有空格。

在测试运算符“=”、“!=”、以及“-z”等符号的左右两边,一定含有一个空格。 

整数测试

test number1 op number2

或者 [ number1 op number2 ]

n1 -eq n2    比较n1是否等于n2

n1 -ne n2    比较n1与n2是否不相等

n1 -gt n2    比较n1是否大于n2

n1 -lt n2    比较n1是否小于n2

n1 -le n2    比较n1是否小于等于n2

n1 -ge n2    比较n1是否大于等于n2 

文件测试

test op file

[ op file ]

-a/e file    文件是否存在

-d file    文件是否存在且为目录

-s file    是否存在且非空

-w/r/x    是否存在且可写/可读/可执行

逻辑操作符

!expression    逻辑非,条件表达式为假,则该操作符的运算结果为真

expression1 -a expression2    逻辑与

expression1 -o expression2    逻辑或

2    条件判断语句

if expression

then

    statement1

    statement2

    ...

fi

if expression; then

    statement1

    statement2

    ...; fi

在使用if语句时,一定不要漏掉最后的结束标志fi

if else基本语法:

if expression

then

    statement1

    ...

else

    statement2

    ...

fi

if expression1

then

    statement1

    ...

elif expression2

then

    statement1

    ...

elif expression3

then

    statement1

    ...

else

    statement1

fi

使用exit语句退出程序

exit status (exit 0)

2    多条件判断语句case

基本语法:

case variable in

value1)

    statement1

    ...;;

value2)

    statement2

    ...;;

...

valuen)

    statement1

    ...;;

*)

    statement1

    ...;;

esac

[:lower:]小写字母

[:upper:]大写字母

3    运算符

使用expr外部程序  必须采用松散格式且需要转义(不推荐)

expr expression

eg. result = `expr 2 - 100`

echo "$result"

$((...))  $[...]  

无论采用松散或紧凑格式均可,算数表达式中的星号和圆括号也无需转义处理

result=$[(5*6)/7]

(推荐)

使用let命令

let n=n+1

4    位运算

let "x<<2"

let n+=1

5    自增自减

只针对变量操作,不针对常量或者表达式

6    数字常量进制

两种语法表示进制,首先是增加前缀,0开头表示八进制。0x开头表示十六进制

第二种是使用井号“#”,2#1000表示二进制。8#42表示八进制

((x=020))  

echo "$x"

((x=8#123))

echo "&x"