1.命名規則shell
- 命名只能使用英文字母,數字和下劃線,首個字符不能以數字開頭
- 中間不能有空格,能夠使用下劃線(_)
- 不能使用標點符號。
- 不能使用bash裏的關鍵字
2.定義變量:name=value
3.使用變量:$name
4.只讀變量:readonly name
5.刪除變量:uset name
6.變量類型數組
- 局部變量:當前shell有效
- 環境變量:全部的應用程序有效
name="hello" # 使用雙引號拼接 greeting="hello, "$name" !" greeting_1="hello, $name} !" echo $greeting $greeting_1 # 使用單引號拼接 greeting_2='hello, '$name' !' greeting_3='hello, ${name} !' echo $greeting_2 $greeting_3
輸出結果爲:bash
hello, hello ! hello, hello} ! hello, hello ! hello, ${name} !
string="abcd" echo ${#string} #輸出 4
string="hello world" echo ${string:1:4}#輸出 ello # 字符串下標從0開始
string="hello world" echo `expr index $string e`#輸出2
7.反引號和$()同樣,裏面的語句看成命令執行markdown
- $0:執行的文件名
- $1:爲第一個參數
- $2:爲第二個參數 以此類推
- $#:傳遞到腳本的參數個數
- $$:腳本運行的當前進程ID
- $!:後臺運行的最後一個進程ID
- $?:回傳碼,顯示最後命令的退出狀態
- $@,$*:顯示全部傳遞的參數
假設變量a=10,b=20函數
運算符 | 說明 | 舉例 |
---|---|---|
+ | 加法 | expr $a + $b 結果爲 30。 |
- | 減法 | expr $a - $b 結果爲 -10。 |
* | 乘法 | expr $a \* $b 結果爲 200。 |
/ | 除法 | expr $b / $a 結果爲 2。 |
% | 取餘 | expr $b % $a 結果爲 0。 |
= | 賦值 | a=$b 將把變量 b 的值賦給 a。 |
== | 相等 | 用於比較兩個數字,相同則返回 true。 [ $a == $b ] 返回 false。 |
!= | 不相等 | 用於比較兩個數字,不相同則返回 true。 [ $a != $b ] 返回 true。 |
運算符 | 說明 | 舉例 |
---|---|---|
-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。 |
運算符 | 說明 | 舉例 |
---|---|---|
&& | 邏輯的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
|| | 邏輯的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
運算符 | 說明 | 舉例 |
---|---|---|
! | 非運算,表達式爲 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 |
運算符 | 說明 | 舉例 |
---|---|---|
= | 檢測兩個字符串是否相等,相等返回 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 |
操做符 | 說明 | 舉例 |
---|---|---|
-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 |
if condition then command1 command2 ... commandN fi
if condition then command1 command2 ... commandN else command fi
if condition1 then command1 elif condition2 then command2 else commandN fi
for循環通常格式爲:測試
for var in item1 item2 ... itemN do command1 command2 ... commandN done
while condition do command done
until condition do command done
case 值 in 模式1) command1 command2 ... commandN ;; 模式2) command1 command2 ... commandN ;; esac
- break跳出全部循環
- continue跳出當前循環
- 標準輸入 0
- 標準輸出 1
- 標準錯誤輸出 2