shell腳本
shell為非類型的解釋型語言,即給變量賦值時就已為其定義。
#!/bin/bash //環境說明
- chmod o+x 文件名 //命令行運行
-
/bin/bash 文件名 //同上作用
-
$變量名 //引用變量
-
$0 //當前程序的名稱(系統早先定義)
-
$n //第n個參數
-
$* //全部參數
-
$PWD //當前所在的目錄
-
-f //文件是否存在
-
-d //目錄是否存在
-
-s //檢查文件是否為空(比較成功時表示含有數據;通常在刪除文件時使用)
-
-nt;-ot //比較一個文件和另一個文件的新舊
-
-x;-w; //執行權限和寫入權限
-
-eq(等於)-ne(不等於)-lt(小於)-gt(大於)-le(小於等於)-o(或,單方面成立)-a(與,多方面成立)-z(空字符串)
-
(())[[]] //雙圓括號表示數學表達式,雙方括號表示高級字符串處理函數 //通常用於算術判斷或計算
-
if開頭 fi結尾 if ();then(if語句只執行返回值為成功返回(0)的命令 而跳過錯誤命令)(可以使用布爾邏輯來執行if [] || [];if [] && [])
-
elif
-
case命令:eg:
case var in pattern1 | pattern2) command1;;
pattern3) command2;;
*) default command3;;
esac -
括號中開頭和結尾要空格
-
while ();do
done -
for var in list
do
commands
done -
until語句 同while 但是相反 知道為0停止
-
C式for循環:eg:
for(( i=1; i<10; i++ ))
注意:變量的賦值可以包含空格;變量不以美元符號做前綴;迭代處理式中不含expr式 -
if和while后要空格
-
反引號的內容當成命令來執行
-
date +%y%m%d //日期按年月日格式輸出
-
wc命令對數據中的文本計數,默認情況下生成三個值:文本行數,單詞數,字節數
-
退出腳本時會返回一個0到255的整數值 可以使用$?來捕捉這個值 判斷腳本是否執行成功(返回0一般表示執行成功)(可以自己設置腳本退出的返回代碼在0到255之間的一個數;eg:exit 5;沒設置時 1為未知錯誤,2為誤用shell命令,126為用戶無權限執行該命令,127為沒有找到命令)
-
可以通過暫時更改環境變量中的IFS變量來使腳本忽略字段分隔符(空格,制表,分隔)eg: IFS = $'/n'
重定向:
- 輸入重定向:eg:command < inputfile (箭頭方向為數據流方向)
- 內置輸入重定向:eg:
$wc << EOF
test.txt
EOF
(EOF為數據標記,開始和結尾處必須相同) - expr命令可以處理等式:eg
$expr 1+5
也可以使用$[1 + 5] - bc命令可以調用bash的計算器 需要離開時輸入quit(scale設置小數位大小 同時可以在腳本中使用bc命令 eg:
variable`echo "options;express | bc"`