a=2

b=3

算术运算

  — —   $((expression))    echo $((a+b)) 、echo $(($a+$b))

  — —   $[expression]     echo $[a+b]

  — —   expr  expression    echo expr  $a  +  $b      (有空格)

 

内置测试判断(测试表达式与[]之间有空格)

  — —  test   测试表达式    test  $a -lt $b

  — —  [测试表达式]      [  $a -lt $b  ]


 

命令执行判断依据   ;   &&     ||

 

 

  &&:逻辑与,第一个表达式为false,则不再计算第二个表达式  

    cmd1&&cmd2:  

  ||:逻辑或,第一个表达式为false则计算第二个表达式

    cmd1||cmd2:

  ;:执行多个命令 

    sync;sync;shutdown -h now


数值比较

  -eq  等于则为真

  -ne  不等于则为真

  -gt  大于为真

  -ge  大于等于为真

  -lt  小于为真

  -le  小于等于为真

字符串测试 :

    == : 测试是否相等, 相等为真, 不等为假

    != : 测试是否不等, 不等为真, 等为假

    >

    <

    -n string : 测试指定字符串是否为空, 空则真,不空则假

    -z string : 测试指定字符串是否不空,不空为真, 空则为假

练习:
传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结果显示出来。

#!/bin/bash
#
if [ $# -eq 0 ]; then 
    echo 'usage: need a variable.'
    exit 8
fi
    USERID=`id -u $1`
    GROUPID=`id -g $1`
if [ $USERID -eq $GROUPID ]; then 
        USERNAME=`id -u -n $1`
        GROUPNAME=`id -g -n $1`
        echo "username is $USERNAME"
        echo "groupname is $GROUPNAME"
fi

或者

 1 #!/bin/bash
 2 #
 3 if [ $# -eq 0 ]; then 
 4     echo 'usage : need a variable.'
 5     exit 8
 6 fi
 7 if ! id $1 &> /dev/null; then    
 8     echo "No usch user."
 9     exit 10
10 fi
11 if [ `id -n -u $1` == `id -n -g $1` ]; then
12     echo 'username == groupname'
13 else
14     echo 'username != groupname'
15 fi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

posted on 2017-10-12 21:50  飘曳残生  阅读(131)  评论(0编辑  收藏  举报