shell運(yùn)算符-1

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。|

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Shell 和其他編程語(yǔ)言一樣,支持多種運(yùn)算符,包括: 算數(shù)運(yùn)算符 關(guān)系運(yùn)算符 布爾運(yùn)算符 字符串運(yùn)算符 文件測(cè)試...
    孤月環(huán)舟閱讀 349評(píng)論 0 0
  • Bash 支持很多運(yùn)算符,包括算數(shù)運(yùn)算符、關(guān)系運(yùn)算符、布爾運(yùn)算符、字符串運(yùn)算符和文件測(cè)試運(yùn)算符。 原生bash不支...
    Viking_Den閱讀 425評(píng)論 0 2
  • 原生bash不支持簡(jiǎn)單的數(shù)學(xué)運(yùn)算,但是可以通過(guò)其他命令來(lái)實(shí)現(xiàn),如 awk 和 expr,expr 最常用。 算術(shù)運(yùn)...
    謝小帥閱讀 442評(píng)論 0 0
  • 四則運(yùn)算簡(jiǎn)單四則運(yùn)算:awk、expr 注意 val=.. 中間不能有空格 $a + $b 中間有空格,否則會(huì)使...
    來(lái)去匆匆不過(guò)過(guò)客閱讀 382評(píng)論 0 0
  • 大多數(shù)女生都在抱怨身邊的男生不夠好,沒(méi)人追,遇到喜歡的往往都是渣男。 很多朋友對(duì)渣男掏心掏肺換來(lái)的結(jié)果是劈腿、被甩...
    哇啦說(shuō)閱讀 2,782評(píng)論 1 1

友情鏈接更多精彩內(nèi)容