定義變量 變量前不加$美圓符號(php語言中須要添加)
與Java命名規則相同 1.不能如下劃線、空格、數字、特殊符號開頭 2.不能使用bash關鍵字
test_name="aa" echo $test_name
運行的結果以下
php
unset variable_name
1) 局部變量 局部變量在腳本或命令中定義,僅在當前shell實例中有效,其餘shell啓動的程序不能訪問局部變量。 2) 環境變量 全部的程序,包括shell啓動的程序,都能訪問環境變量,有些程序須要環境變量來保證其正常運行。必要的時候shell腳本也能夠定義環境變量。 3) shell變量 shell變量是由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行
單引號字符串的限制: 單引號裏的任何字符都會原樣輸出,單引號字符串中的變量是無效的; 單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符後也不行),但可成對出現,做爲字符串拼接使用。
雙引號的優勢: 雙引號裏能夠有變量 雙引號裏能夠出現轉義字符
${#string}
${String:index_start-1:char_account} 列入從第二個字符開始截取6個字符 ${string:1:6}
expr index "$string" +查到的某個字符串
數組名=(值1,值2.....) 例:array_name=(value1,value2......)
讀取數組元素值的通常格式是: ${數組名[下標]} 例${array_name[0]}
# 取得數組元素的個數 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得數組單個元素的長度 lengthn=${#array_name[n]}
以 # 開頭的行就是註釋,會被解釋器忽略。 經過每一行加一個 # 號設置多行註釋
多行註釋還可使用如下格式: :<<EOF 註釋內容... 註釋內容... 註釋內容... EOF
腳本內獲取參數的格式爲:$n。n 表明一個數字,0表明執行的文件名,1 爲執行腳本的第一個參數,2 爲執行腳本的第二個參數,以此類推…… $# 傳遞到腳本的參數個數 $* 以一個單字符串顯示全部向腳本傳遞的參數。 如"$*"用「"」括起來的狀況、以"$1 $2 … $n"的形式輸出全部參數。 $$ 腳本運行的當前進程ID號 $! 後臺運行的最後一個進程的ID號 $@ 與$*相同,可是使用時加引號,並在引號中返回每一個參數。 如"$@"用「"」括起來的狀況、以"$1" "$2" … "$n" 的形式輸出全部參數。 $- 顯示Shell使用的當前選項,與set命令功能相同。 $? 顯示最後命令的退出狀態。0表示沒有錯誤,其餘任何值代表有錯誤。
聲明array_name=(value1 value2......)或array_name[0]=value1 array_name[1]=value2...... 取值 ${array_name[0]} 取元素個數 ${#array_name[*]}或 ${#array_name[@]}
Shell 和其餘編程語言同樣,支持多種運算符,包括: 算數運算符 關係運算符 布爾運算符 字符串運算符 文件測試運算符 原生bash不支持簡單的數學運算,可是能夠經過其餘命令來實現,例如 awk 和 expr,expr 最經常使用。 expr 是一款表達式計算工具,使用它能完成表達式的求值操做。 1.算術運算符:與java相同 須要expr + 加法 `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。 2.關係運算符:與java相同 -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。 3.布爾運算符 ! 非運算,表達式爲 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。 4.邏輯運算符 && 邏輯的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false || 邏輯的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true 5.字符串運算符 = 檢測兩個字符串是否相等,相等返回 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。 6.文件測試運算符 文件測試運算符用於檢測 Unix 文件的各類屬性。 -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。