Linux教程

Linux中if使用

本文主要是介绍Linux中if使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

if在Linux中的使用及方法

if ....; then

....

elif ....; then

....

else

....

fi

[ -f "somefile" ] :判断是否是一个文件

[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限

[ -n "$var" ] :判断$var变量是否有值

[ "$a" = "$b" ] :判断$a和$b是否相等

-r file     用户可读为真

-w file     用户可写为真

-x file     用户可执行为真

-f file     文件为正规文件为真

-d file     文件为目录为真

-c file     文件为字符特殊文件为真

-b file     文件为块特殊文件为真

-s file     文件大小非0时为真

-t file     当文件描述符(默认为1)指定的设备为终端时为真

或的表达方式

if [ "$a" = 1 ] || [ "$a" = "2" ];then

  echo $a

fi

且的表达方式

if [ "$a" = 1 ] && [ "$a" = "2" ];then

  echo $a

fi

比较两个字符串是否相等的办法是:

if [ "$test"x = "test"x ]; then

这里的关键有几点:

1 使用单个等号

2 注意到等号两边各有一个空格:这是unix shell的要求

3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.

整数比较

-eq      等于,如:if [ "$a" -eq "$b" ]

-ne     不等于,如:if [ "$a" -ne "$b" ]

-gt      大于,如:if [ "$a" -gt "$b" ]

-ge      大于等于,如:if [ "$a" -ge "$b" ]

-lt      小于,如:if [ "$a" -lt "$b" ]

-le      小于等于,如:if [ "$a" -le "$b" ]

      大于(需要双括号),如:(("$a" > "$b"))

>=     大于等于(需要双括号),如:(("$a" >= "$b"))

小数据比较可使用AWK

字符串比较

=      等于,如:if [ "$a" = "$b" ]

==      等于,如:if [ "$a" == "$b" ],与=等价

 注意:==的功能在[[]]和[]中的行为是不同的,如下:

  1 [[ $a == z* ]]   # 如果$a以"z"开头(模式匹配)那么将为true

  2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true

 3[ $a == z* ]     # File globbing 和word splitting将会发生

 4[ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true

  一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.

 但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.

!=      不等于,如:if [ "$a" != "$b" ]

这个操作符将在[[]]结构中使用模式匹配.

 大于,在ASCII字母顺序下.如:

 if [[ "$a" > "$b" ]]

 if [ "$a" \> "$b" ]

注意:在[]结构中">"需要被转义.

具体参考Example 26-11来查看这个操作符应用的例子.

-z      字符串为"null".就是长度为0.

-n      字符串不为"null"

数字比较也可以用下面的表式方法:

if((${d1}==0))    if((${d1<0}))

这篇关于Linux中if使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!