Shell入門:Shell運算子,入門shell運算子

來源:互聯網
上載者:User

Shell入門:Shell運算子,入門shell運算子
Shell入門(二)之Shell運算子Shell基本運算子

Shell和其他程式設計語言一樣,支援多種運算子,包括:

算術運算子

關係運算子

布林運算子

字串運算子

原生的bash不支援簡單的數學運算,但是可以通過其他命令來實現,例如:awk和expr,expr最為常用。

如:

val=`expr 2 + 3`echo $val

輸出:5

注意,2 + 3之間需要有一個空格

算術運算子

a變數為10,b變數為20。

運算子 說明 舉例
+ 加號 `expr $a + $b`,結果:30
- 減號 `expr $a - $b`,結果:-10
* 乘號 `expr $a * $b`,結果:200
/ 除號 `expr $b / $a`,結果:2
% 取餘 `expr $b % $a`,結果:0
= 賦值 var=$a,把變數a賦值給var
== 等於 [$a == $b],結果為0
!= 不等於 [$a != $b],結果為1

eg:

[zhang@localhost home]$ a=10[zhang@localhost home]$ b=20[zhang@localhost home]$ echo $a + $b = `expr $a + $b`10 + 20 = 30[zhang@localhost home]$ echo $a - $b = `expr $a - $b`10 - 20 = -10[zhang@localhost home]$ echo $a \* $b = `expr $a \* $b`10 * 20 = 200[zhang@localhost home]$ echo $a / $b = `expr $a / $b`10 / 20 = 0[zhang@localhost home]$ echo $b / $a = `expr $b / $a`20 / 10 = 2[zhang@localhost home]$ echo $b % $a = `expr $b % $a`20 % 10 = 0[zhang@localhost home]$ var=$a[zhang@localhost home]$ echo $var10[zhang@localhost home]$ echo $[$a == $b]0[zhang@localhost home]$ echo $[$a != $b]1[zhang@localhost home]$ echo $[$a == 10]1

註:$[$a == $b]的寫法,可以使用$[a == b]替代,如:

[zhang@localhost ~]$ a=10[zhang@localhost ~]$ b=20[zhang@localhost ~]$ echo $[a + b]30[zhang@localhost ~]$ echo $[a - b]-10[zhang@localhost ~]$ echo $[a * b]200[zhang@localhost ~]$ echo $[a / b]0[zhang@localhost ~]$ echo $[a == b]0[zhang@localhost ~]$ echo $[a != b]1[zhang@localhost ~]$ echo $[a >= b]0[zhang@localhost ~]$ echo $[a <= b]1[zhang@localhost ~]$ echo $[a % b]10

關係運算子

運算子 說明 舉例
-eq 檢測2個數是否相等,相等返回true。 [$a -eq $b]返回false
-ne 檢測2個數是否不相等,相等返回true。 [$a -ne $b]返回true
-gt 檢測左邊的數是否大於右邊的,如果是,則返回true [$a -gt $b]返回false
-lt 檢測左邊的數是否小於右邊的,如果是,則返回true [$a -lt $b]返回true
-ge 檢測左邊的數是否大於等於右邊的,如果是,則返回true [$a -ge $b]返回false
-le 檢測左邊的數是否小於等於右邊的,如果是,則返回true [$a -le $b]返回true

eg:

#!/bin/basha=10b=20if [ $a -eq $b ]then    echo "$a -eq $b : a is equal to b"else    echo "$a -eq $b: a is not equal to b"fiif [ $a -ne $b ]then    echo "$a -ne $b : a is not equal to b"else    echo "$a -ne $b : a is equal to b"fiif [ $a -gt $b ]then    echo "$a -gt $b : a is greater than b"else    echo "$a -gt $b : a is not greater than b"fiif [ $a -lt $b ]then    echo "$a -lt $b : a is less than b"else    echo "$a -lt $b : a is not less than b"fiif [ $a -ge $b ]then    echo "$a -ge $b : a is greater or equal to b"else    echo "$a -ge $b : a is not greater or equal to b"fiif [ $a -le $b ]then    echo "$a -le $b : a is less or equal to b"else    echo "$a -le $b : a is not less or equal to b"fi

輸出結果:

10 -eq 20: a is not equal to b10 -ne 20 : a is not equal to b10 -gt 20 : a is not greater than b10 -lt 20 : a is less than b10 -ge 20 : a is not greater or equal to b10 -le 20 : a is less or equal to b

布林運算子

運算子 說明 舉例
! 非運算,運算式為true,則返回false,否則返回true [!false]返回true
-o 或運算,有一個運算式為true,則返回true [ $a -lt 20 -o $b -gt 100],返回true
-a 與運算,2個運算式都為true,才返回true [$a -lt 20 -a $b -gt 100],返回false

eg:

#!/bin/basha=10b=20if [ $a != $b ]then    echo "$a != $b"else    echo "$a == $b"fiif [ $a -lt 20 -o $b -gt 100 ]then    echo "$a less than 20 or $b greater than 100 : return true"else    echo "$a less than 20 or $b greater than 100 : return false"fiif [ $a -lt 20 -a $b -gt 100 ]then    echo "$a less than 20 and greater than 100 : return true"else    echo "$a less than 20 and greater than 100 : return false"fi

輸出結果:

10 != 2010 less than 20 or 20 greater than 100 : return true10 less than 20 and greater than 100 : return false

邏輯運算子

運算子 說明 舉例
&& 邏輯的and [[ $a -lt 100 && $b -gt 100 ]] 返回 false
|| 邏輯的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true

eg:

#!/bin/basha=10b=20if [[ $a -lt 100 && $b -gt 100 ]]then    echo "return true"else    echo "return false"fiif [[ $a -lt 100 || $b -gt 100 ]]then    echo "return true"else    echo "return false"fi

輸出結果:

return falsereturn true

字串運算子

a變數為”abc”,b變數為”efg”。

運算子 說明 舉例
= 檢測兩個字串是否相等,相等返回true [ $a = $b ],返回false
!= 檢測兩個字串是否相等,不相等返回true [ $a != $b ],返回true
-z 檢測字串長度是否為0,不為0返回true [ -z $a ]返回false
-n 檢測字串長度是否為0,不為0返回true [ -n $a ]返回true
str 檢測字串是否為空白,不為空白返回true [$a]返回true

eg:

#!/bin/basha="abc"b="efg"if [ $a = $b ]then    echo "$a equal $b"else    echo "$a not equal $b"fiif [ $a != $b ]then    echo "$a != $b"else    echo "$a == $b"fiif [ -n $b ]then    echo "$b length ${#b}"else    echo "$b length 0"fi# eg: strif [ $a ]then    echo "$a not null"else    echo "$a is null"fi

結果:

abc not equal efgabc != efgabc length 3efg length 3abc not null

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.