?
?
dd
#!/bin/bash echo 'Hello World!'array=(a b 3 "ch") for i in array;doecho ${array[i]} doneecho ${array[*]} echo ${#array[@]} #--------------------------------------- vers=$(uname -r) #括號表示括號里面的內容先執行 等同于反引號 echo ${vers} read -p "input your name: " -t 30 named #---------------------------------------- val=$((2+2)) echo "兩數之和為 : $val"#輸出========================================================================== Hello World! a a b 3 ch 4 3.13.0-32-generic 兩數之和為 : 4
原生bash不支持簡單的數學運算,但是可以通過其他命令來實現,例如 awk 和 expr,expr 最常用。
expr 是一款表達式計算工具,使用它能完成表達式的求值操作。
例如,兩個數相加(注意使用的是反引號 ` 而不是單引號 '):
#!/bin/bashval=`expr 2 + 2`
echo "兩數之和為 : $val"
運行實例 ?
執行腳本,輸出結果如下所示:
兩數之和為 : 4
兩點注意:
- 表達式和運算符之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2,這與我們熟悉的大多數編程語言不一樣。
- 完整的表達式要被 ` ` 包含,注意這個字符不是常用的單引號,在 Esc 鍵下邊。
注意:條件表達式要放在方括號之間,并且要有空格,例如:?[$a==$b]?是錯誤的,必須寫成?[ $a == $b ]。?
?
運算符 | 說明 | 舉例 |
---|---|---|
-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。 |
a=10 b=20if [ $a -eq $b ] thenecho "$a -eq $b : a 等于 b" elseecho "$a -eq $b: a 不等于 b" fi
字符串運算符
下表列出了常用的字符串運算符,假定變量 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。 |
if [ -z $a ] thenecho "-z $a : 字符串長度為 0" elseecho "-z $a : 字符串長度不為 0" fi
文件測試
參數 | 說明 |
---|---|
-e 文件名 | 如果文件存在則為真 |
-r 文件名 | 如果文件存在且可讀則為真 |
-w 文件名 | 如果文件存在且可寫則為真 |
-x 文件名 | 如果文件存在且可執行則為真 |
-s 文件名 | 如果文件存在且至少有一個字符則為真 |
-d 文件名 | 如果文件存在且為目錄則為真 |
-f 文件名 | 如果文件存在且為普通文件則為真 |
-c 文件名 | 如果文件存在且為字符型特殊文件則為真 |
-b 文件名 | 如果文件存在且為塊特殊文件則為真 |
實例演示:
cd /bin if test -e ./bash then echo '文件已存在!' else echo '文件不存在!' fi
?
?
?
?
?
?
?
?
?
?
?
dd