1. 算術(shù)運(yùn)算符
#!/bin/sh
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b` #乘法需要加一個(gè)\
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a is equal to b"
fi
if [ $a != $b ]
then
echo "a is not equal to b"
fi
[root@localhost shell_study]# ./test.sh
a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a is not equal to b
2. 關(guān)系運(yùn)算符
#!/bin/sh
a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b : a is equal to b"
else
echo "$a -eq $b: a is not equal to b"
fi
關(guān)系運(yùn)算符列表
| 運(yùn)算符 | 說(shuō)明 | 舉例 |
|---|---|---|
| -eq | 檢測(cè)兩個(gè)數(shù)是否相等,相等返回 true。 | [ $a -eq $b ] 返回 true。 |
| -ne | 檢測(cè)兩個(gè)數(shù)是否相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
| -gt | 檢測(cè)左邊的數(shù)是否大于右邊的,如果是,則返回 true。 | [ $a -gt $b ] 返回 false。 |
| -lt | 檢測(cè)左邊的數(shù)是否小于右邊的,如果是,則返回 true。 | [ $a -lt $b ] 返回 true。 |
| -ge | 檢測(cè)左邊的數(shù)是否大等于右邊的,如果是,則返回 true。 | [ $a -ge $b ] 返回 false。 |
| -le | 檢測(cè)左邊的數(shù)是否小于等于右邊的,如果是,則返回 true。 | [ $a -le $b ] 返回 true |
3. 邏輯運(yùn)算符
#!/bin/bash
a=10
b=20
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "true"
else
echo "false"
fi
| 運(yùn)算符 | 說(shuō)明 | 舉例 |
|---|---|---|
| ! | 非運(yùn)算,表達(dá)式為 true 則返回 false,否則返回 true。 | [ ! false ] 返回 true。 |
| -o (or) | 或運(yùn)算,有一個(gè)表達(dá)式為 true 則返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
| -a(and) | 與運(yùn)算,兩個(gè)表達(dá)式都為 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
注意:
表達(dá)方式:if((a<100 && b>15))
4. 字符串運(yùn)算符
#!/bin/bash
a="aa"
if [ -z $a ]
then
echo "a is empty"
else
echo "a is not empty"
fi
字符串運(yùn)算符列表
|運(yùn)算符| 說(shuō)明| 舉例|
|-|-|
|= |檢測(cè)兩個(gè)字符串是否相等,相等返回 true。| [ $a = $b ] 返回 false。|
|!=| 檢測(cè)兩個(gè)字符串是否相等,不相等返回 true。| [ $a != $b ] 返回 true。|
|-z(zero) |檢測(cè)字符串長(zhǎng)度是否為0,為0返回 true。 |[ -z $a ] 返回 false。|
|-n(not zero) |檢測(cè)字符串長(zhǎng)度是否為0,不為0返回 true。| [ -z $a ] 返回 true。|
|str |檢測(cè)字符串是否為空,不為空返回 true。 |[ $a ] 返回 true|
5. 文件運(yùn)算符
#!/bin/bash
file="/usr/shell_study/test.sh"
if [ -r $file ]
then
echo "file has read access"
fi
if [ -e $file ]
then
echo "file/dir is exist"
fi
文件測(cè)試運(yùn)算符列表
|操作符 |說(shuō)明 |舉例|
|-|-|
|-b |file |檢測(cè)文件是否是塊設(shè)備文件,如果是,則返回 true。| [ -b $file ] 返回 false。|
|-c |file |檢測(cè)文件是否是字符設(shè)備文件,如果是,則返回 true。 |[ -b $file ] 返回 false。|
|-d |file |檢測(cè)文件是否是目錄,如果是,則返回 true。 |[ -d $file ] 返回 false。|
|-f |file |檢測(cè)文件是否是普通文件(既不是目錄,也不是設(shè)備文件),如果是,則返回 true。 |[ -f $file ] 返回 true。|
|-g |file |檢測(cè)文件是否設(shè)置了 SGID 位,如果是,則返回 true。| [ -g $file ] 返回 false。|
|-k |file |檢測(cè)文件是否設(shè)置了粘著位(Sticky Bit),如果是,則返回 true。| [ -k $file ] 返回 false。|
|-p |file |檢測(cè)文件是否是具名管道,如果是,則返回 true。 |[ -p $file ] 返回 false。|
|-u |file |檢測(cè)文件是否設(shè)置了 SUID 位,如果是,則返回 true。| [ -u $file ] 返回 false。|
|-r |file |檢測(cè)文件是否可讀,如果是,則返回 true。| [ -r $file ] 返回 true。|
|-w |file |檢測(cè)文件是否可寫(xiě),如果是,則返回 true。 |[ -w $file ] 返回 true。|
|-x |file |檢測(cè)文件是否可執(zhí)行,如果是,則返回 true。 |[ -x $file ] 返回 true。|
|-s (size) |file |檢測(cè)文件是否為空(文件大小是否大于0),不為空返回 true。 |[ -s $file ] 返回 true。|
|-e (exsit)|file |檢測(cè)文件(包括目錄)是否存在,如果是,則返回 true。| [ -e $file ] 返回 true。|