Shell學習【運算子】
算數運算子
運算子 | 說明 | 舉例 |
---|---|---|
+ | 加法 | `expr $a + $b` |
- | 減法 | `expr $a - $b` |
* | 乘法 | `expr $a \* $b` |
/ | 除法 | `expr $b / $a` |
% | 取餘 | `expr $b % $a` |
= | 賦值 | a=$b 將把變數 b 的值賦給 a。 |
== | 相等。用於比較兩個數字,相同則返回 true。 | [ $a == $b ] 返回 false。 |
!= | 不相等。用於比較兩個數字,不相同則返回 true。 | [ $a != $b ] 返回 true |
示例:
#!/bin/bash #author:zrc a=5 b=10 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 ${a} / ${b}` echo "a / b : ${val}" #注意空格使用 if [ $a == $b ];then echo " a = b " fi if [ $a != $b ];then echo " a != b " fi
關係運算子
關係運算子不支援字串(字串見後面),只支援數字 例:a=5 b=10
運算子 | 說明 | 舉例 |
---|---|---|
-eq | 檢測兩個數是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
-ne | 檢測兩個數是否不相等,不相等返回 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。 |
示例:
#!/bin/bash #author:zrc a=5 b=10 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
布林運算子
例:a=5 b=10
運算子 | 說明 | 舉例 |
---|---|---|
! | 非運算,表示式為 true 則返回 false,否則返回 true。 | [ ! false ] 返回 true。 |
-o | 或運算,有一個表示式為 true 則返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 與運算,兩個表示式都為 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
邏輯運算子
注意使用邏輯運算子需要多重使用[]符號 例:a=5 b=10
true and flase 返回 false
true and false 返回 true
運算子 | 說明 | 舉例 |
---|---|---|
&& | 邏輯的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
|| | 邏輯的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
字串運算子
下表列出了常用的字串運算子,假定變數 a 為 "aaa",變數 b 為 "bbb":
運算子 | 說明 | 舉例 |
---|---|---|
= | 檢測兩個字串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 |
!= | 檢測兩個字串是否相等,不相等返回 true。 | [ $a != $b ] 返回 true。 |
-z | 檢測字串長度是否為0,為0返回 true。 | [ -z $a ] 返回 false。 |
-n | 檢測字串長度是否為0,不為0返回 true。 | [ -n "$a" ] 返回 true。 |
$ | 檢測字串是否為空,不為空返回 true。 | [ $a ] 返回 true。 |
示例:
#!/bin/bash #author:zrc a="aaa" b="bbb" 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 $b ];then echo "-z $b : 字元長度為0 " else echo "-z $b : 字元長度為${#b} " fi if [ -n $b ];then echo "-z $b : 字元長度不為0 " else echo "-z $b : 字元長度為${#b} " fi if [ $b ];then echo "$b : 字串不為空 " else echo "$b : 字串為空 " fi
檔案運算子
運算子 | 說明 | 舉例 |
---|---|---|
-b file | 檢測檔案是否是塊裝置檔案,如果是,則返回 true。 | [ -b $file ] 返回 false。 |
-c file | 檢測檔案是否是字元裝置檔案,如果是,則返回 true。 | [ -c $file ] 返回 false。 |
-d file | 檢測檔案是否是目錄,如果是,則返回 true。 | [ -d $file ] 返回 false。 |
-f file | 檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回 true。 | [ -f $file ] 返回 true。 |
-g file | 檢測檔案是否設定了 SGID 位,如果是,則返回 true。 | [ -g $file ] 返回 false。 |
-k file | 檢測檔案是否設定了粘著位(Sticky Bit),如果是,則返回 true。 | [ -k $file ] 返回 false。 |
-p file | 檢測檔案是否是有名管道,如果是,則返回 true。 | [ -p $file ] 返回 false。 |
-u file | 檢測檔案是否設定了 SUID 位,如果是,則返回 true。 | [ -u $file ] 返回 false。 |
-r file | 檢測檔案是否可讀,如果是,則返回 true。 | [ -r $file ] 返回 true。 |
-w file | 檢測檔案是否可寫,如果是,則返回 true。 | [ -w $file ] 返回 true。 |
-x file | 檢測檔案是否可執行,如果是,則返回 true。 | [ -x $file ] 返回 true。 |
-s file | 檢測檔案是否為空(檔案大小是否大於0),不為空返回 true。 | [ -s $file ] 返回 true。 |
-e file | 檢測檔案(包括目錄)是否存在,如果是,則返回 true。 | [ -e $file ] 返回 true。 |
轉載學習:
runoob.com
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31441024/viewspace-2640375/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SHELL運算子
- shell指令碼程式設計學習筆記-運算子指令碼程式設計筆記
- 『忘了再學』Shell基礎 — 20、Shell中的運算子
- Java學習之運算子Java
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- Python學習-比較運算子和邏輯運算子Python
- shell指令碼——基本運算子指令碼
- ES6學習...運算子
- Java學習筆記--運算子Java筆記
- python學習之運算子Python
- C#學習 運算子(20)C#
- shell程式設計(二)運算子程式設計
- 【linux】Shell中的運算子Linux
- Go語言學習(7) - 運算子Go
- Flutter學習筆記(5)--Dart運算子Flutter筆記Dart
- Linux Shell 雙括號運算子使用Linux
- C語言學習筆記--C運算子C語言筆記
- Rxjs TakeUntil 運算子的學習筆記JS筆記
- Python的基礎學習(五):運算子Python
- PHP比較運算子的詳細學習PHP
- 表的聯結、運算子學習筆記筆記
- 運算子 運算子
- 初步C++運算子過載學習筆記<3> 增量遞減運算子過載C++筆記
- Go運算子、控制語句-DateWhale開源學習Go
- C++學習筆記(二) 運算子過載C++筆記
- 【學習】SQL基礎-008-集合運算子SQL
- 《前端運維》一、Linux基礎--05Shell運算子前端運維Linux
- php運算子 比較運算子 邏輯運算子 三元運算子PHP
- 運算子-賦值運算子賦值
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- Python運算子有哪些型別?Python學習Python型別
- python菜鳥教程學習5: python運算子Python
- 碎片化學習Java(九)-- Java三元運算子Java
- 碎片化學習Java(八)-- Java三元運算子Java
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- javascript運算子——邏輯運算子JavaScript
- Solidity語言學習筆記————14、左值運算子Solid筆記