Linux 的 Shell 種類衆多,常見的有:php
……
經常使用的bash,即Bourne Again Shelllinux
做爲可執行程序
將上面的代碼保存爲 test.sh,並 cd 到相應目錄:shell
chmod +x ./test.sh #使腳本具備執行權限 ./test.sh #執行腳本
注意,必定要寫成 ./test.sh,而不是 test.sh,運行其它二進制的程序也同樣,直接寫 test.sh,linux 系統會去 PATH 裏尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裏,你的當前目錄一般不在 PATH 裏,因此寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找。
須要在第一行指定解釋器,指定解釋器的方法:數組
#!/bin/bash
做爲解釋器參數
這種運行方式是,直接運行解釋器,其參數就是 shell 腳本的文件名,如:bash
/bin/sh test.sh /bin/php test.php
這種方式運行的腳本,不須要在第一行指定解釋器信息,寫了也沒用。工具
使用變量spa
echo $your_name #加$e
推薦給變量加花括號{ }code
for skill in Ada Coffe Action Java; do echo "I am good at ${skill}Script" done
單引號和雙引號的區別圖片
單引號字符串的限制:ip
- 單引號裏的任何字符都會原樣輸出,單引號字符串中的變量是無效的;
- 單引號字串中不能出現單獨一個的單引號(對單引號使用轉義符後也不行),但可成對出現,做爲字符串拼接使用。
雙引號的優勢:
- 雙引號裏能夠有變量
- 雙引號裏能夠出現轉義字符
定義數組
用括號來表示數組,數組元素用"空格"符號分割開。定義數組的通常形式爲:
數組名=(值1 值2 ... 值n)
單獨定義:
array_name[0]=value0
讀取數組
${數組名[下標]} valuen=${array_name[n]}
使用@獲取數組中全部元素
echo ${array_name[@]}
獲取數組長度
與獲取字符串長度相同
取得數組元素的個數
length=${#array_name[@]}
或者
length=${#array_name[*]}
取得數組單個元素的長度
lengthn=${#array_name[n]}
讀取數組元素
${array_name[index]} eg: ${my_array[0]}
咱們能夠在執行 Shell 腳本時,向腳本傳遞參數,腳本內獲取參數的格式爲:$n。n 表明一個數字,1 爲執行腳本的第一個參數,2 爲執行腳本的第二個參數,以此類推……
$0 爲執行的文件名
在爲shell腳本傳遞的參數中若是包含空格,應該使用單引號或者雙引號將該參數括起來,以便於腳本將這個參數做爲總體來接收。
在有參數時,可使用對參數進行校驗的方式處理以減小錯誤發生:
if [ -n "$1" ]; then ##中括號 [] 與其中間的代碼應該有空格隔開 echo "包含第一個參數" else echo "沒有包含第一參數" fi
注意:的是中括號 [] 與其中間的代碼應該有空格隔開
原生bash不支持簡單的數學運算,可是能夠經過其餘命令來實現,例如 awk 和 expr,expr 最經常使用。
expr 是一款表達式計算工具,使用它能完成表達式的求值操做。
例如,兩個數相加(注意使用的是反引號 ` 而不是單引號 '):
val=`expr 2 + 2` echo "兩數之和爲 : $val"
下表列出了經常使用的算術運算符,假定變量 a 爲 10,變量 b 爲 20:
注意:條件表達式要放在方括號之間,而且要有空格,例如:
[$a==$b] 是錯誤的,必須寫成 [ $a == $b ]。