天天看點

shell運算符

算術運算符

#!/bin/bash

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
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 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi           

執行腳本,輸出結果如下所示

a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等于 b           

乘号(*)前邊必須加反斜杠()才能實作乘法運算;

關系運算符

關系運算符隻支援數字,不支援字元串,除非字元串的值是數字。

EQ 就是 EQUAL等于

NQ 就是 NOT EQUAL不等于

GT 就是 GREATER THAN大于 

LT 就是 LESS THAN小于

GE 就是 GREATER THAN OR EQUAL 大于等于

LE 就是 LESS THAN OR EQUAL 小于等

#!/bin/bash

a=10
b=20

if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
   echo "$a -ne $b: a 不等于 b"
else
   echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
   echo "$a -gt $b: a 大于 b"
else
   echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
   echo "$a -lt $b: a 小于 b"
else
   echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
   echo "$a -ge $b: a 大于或等于 b"
else
   echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
   echo "$a -le $b: a 小于或等于 b"
else
   echo "$a -le $b: a 大于 b"
fi           

布爾運算符

#!/bin/bash

a=10
b=20

if [ $a != $b ]
then
   echo "$a != $b : a 不等于 b"
else
   echo "$a != $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a 小于 100 且 $b 大于 15 : 傳回 true"
else
   echo "$a 小于 100 且 $b 大于 15 : 傳回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a 小于 100 或 $b 大于 100 : 傳回 true"
else
   echo "$a 小于 100 或 $b 大于 100 : 傳回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
   echo "$a 小于 5 或 $b 大于 100 : 傳回 true"
else
   echo "$a 小于 5 或 $b 大于 100 : 傳回 false"
fi           

-------------------------------------------------------------

邏輯運算符

#!/bin/bash

a=10
b=20

if [[ $a -lt 100 && $b -gt 100 ]]
then
   echo "傳回 true"
else
   echo "傳回 false"
fi

if [[ $a -lt 100 || $b -gt 100 ]]
then
   echo "傳回 true"
else
   echo "傳回 false"
fi           

字元串運算符

下表列出了常用的字元串運算符,假定變量 a 為 "abc",變量 b 為 "efg":

#!/bin/bash

a="abc"
b="efg"

if [ $a = $b ]
then
  echo "$a = $b : a 等于 b"
else
  echo "$a = $b: a 不等于 b"
fi
if [ $a != $b ]
then
  echo "$a != $b : a 不等于 b"
else
  echo "$a != $b: a 等于 b"
fi
if [ -z $a ]
then
  echo "-z $a : 字元串長度為 0"
else
  echo "-z $a : 字元串長度不為 0"
fi
if [ -n $a ]
then
  echo "-n $a : 字元串長度不為 0"
else
  echo "-n $a : 字元串長度為 0"
fi
if [ $a ]
then
  echo "$a : 字元串不為空"
else
  echo "$a : 字元串為空"
fi           

--------------------------------------

檔案測試運算符

檔案測試運算符用于檢測 Unix 檔案的各種屬性。

屬性檢測描述如下:

#!/bin/bash

file="/var/www/itcast/test.sh"
if [ -r $file ]
then
   echo "檔案可讀"
else
   echo "檔案不可讀"
fi
if [ -w $file ]
then
   echo "檔案可寫"
else
   echo "檔案不可寫"
fi
if [ -x $file ]
then
   echo "檔案可執行"
else
   echo "檔案不可執行"
fi
if [ -f $file ]
then
   echo "檔案為普通檔案"
else
   echo "檔案為特殊檔案"
fi
if [ -d $file ]
then
   echo "檔案是個目錄"
else
   echo "檔案不是個目錄"
fi
if [ -s $file ]
then
   echo "檔案不為空"
else
   echo "檔案為空"
fi
if [ -e $file ]
then
   echo "檔案存在"
else
   echo "檔案不存在"
fi