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