shell测试判断

来源:互联网 发布:长沙军鸽软件怎么样 编辑:程序博客网 时间:2024/05/18 00:00

测试

测试结构

测试命令一般有2种方式:

  • test

    test expression
  • [ ]
    bash
    [ expression ]

    这种方式一般与if case while配合使用

整数比较运算符

运算符 描述 示例 num1 -eq num2 等于 [ 3 -eq $mynum ] num1 -ne num2 不等于 [ 3 -ne $mynum ] num1 -lt num2 小于 [ 3 -lt $mynum ] num1 -le num2 小于或等于 [ 3 -le $mynum ] num1 -gt num2 大于 [ 3 -gt $mynum ] num1 -ge num2 大于或等于 [ 3 -ge $mynum ]

字符串运算符

运算符 描述 示例 -z string 如果 string 长度为零,则为真 [ -z “$myvar” ] -n string 如果 string 长度非零,则为真 [ -n “$myvar” ] string1 = string2 如果 string1 与 string2 相同,则为真 [ “$myvar” = “one two three” ] string1 != string2 如果 string1 与 string2 不同,则为真 [ “$myvar” != “one two three” ] string 判断字符串是否为空 [ $str ]

文件操作符

运算符 描述 示例 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ] -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ] -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ] -r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ] -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ] -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ] filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ] filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

逻辑运算符

运算符 描述 示例 ! expression not expr1 -a expr2 and expr1 -o expr2 or

判断

简单if结构

#then不另起行if [ "$aa" = "$bb" -o "$cc" = "$dd" ] ; then     echo "yes"    fi  #then 另起行if [ "$aa" = "$bb" -o "$cc" = "$dd" ] then      echo "yes"    fi  

exit命令

exit status

参数被保存在$?变量中

if/else结构

if [ "$aa" = "$bb" -o "$cc" = "$dd" ]; then      echo "yes"  else      echo "no"  fi  

if/else嵌套

if/elif/else嵌套

if [ "$aa" = "$bb" -o "$cc" = "$dd" ]then      echo "yes"  elif [ "$aa" = 3 ]      echo "no"  fi  

case结构

    echo 'Input a number between 1 to 4'    echo 'Your number is:\c'    read aNum    case $aNum in        1)  echo 'You select 1'        #-----注意;;        ;;        2)  echo 'You select 2'        ;;        3)  echo 'You select 3'        ;;        4)  echo 'You select 4'        ;;        *)  echo 'You do not select a number between 1 to 4'        ;;    esac

运算符

算数运算符

运算符 说明 举例 + 加法 expr $a + $b 结果为 30。 - 减法 expr $a - $b 结果为 10。 * 乘法 expr $a \* $b 结果为 200。 / 除法 expr $b / $a 结果为 2。 % 取余 expr $b % $a 结果为 0。 ** 取幂 5**3 = 赋值 a=$b 将把变量 b 的值赋给 a。 == 相等。 用于比较两个数字,相同则返回 true。 [ a==b ] 返回 false。 != 不相等。用于比较两个数字,不相同则返回 true。 [ a!=b ] 返回 true。

算数符合运算符

运算符 说明 举例 += 加法 expr $a + $b 结果为 30。 -= 减法 expr $a - $b 结果为 10。 *= 乘法 expr $a \* $b 结果为 200。 /= 除法 expr $b / $a 结果为 2。 %= 取余 expr $b % $a 结果为 0。 **= 取幂 5**3

位运算符

运算符 说明 举例 << 左移 value=4>>2 4左移2位,value值为16 >> 右移 value=8<<2 8右移2位,value值为2 & 按位与 value=8&&4 8按位与4,value值为0 | 按位或 value=8 \~ 按位非 value=~8 按位非8,value值为-9 ^ 按位异或 value=10^3 10按位异或3,value值为9

自增自减运算符

i++运算后加1,i–运算后减1
++i运算前加1,–i运算前减1

数字常量

Linux Shell默认将数字作为十进制进行处理,当使用0前缀表示八进制,0x前缀表示十六进制,同时可以使用num#形式

let "num=40"let "num=027"let "num=0x35"let "num=2#11111000"let "num=8#2735"let "num=16#ffee"
原创粉丝点击