Linux Shell編程學習筆記 登陸Shell,使用者每次登陸系統後自動載入的Shell程式大多數Linux系統採用 /bin/bash 作為預設登陸Shell/etc/shells 檔案記錄系統支援的Shell 系統可以使用的shells,記錄在/etc/shells檔案中cat /etc/shellsecho $SHELL /etc/passwd每一行的最後一項資料就是使用者登入取得的shell 編寫shell script的注意事項:1.指令是從上而下、從左而右分析並執行2.如果讀取到一個Enter符號,就嘗試開始執行該行命令3.可以使用 \[Enter] 進行分行4.# 做注釋 執行指令碼執行/home/zack/shell.sh:1. 直接命令執行: shell.sh檔案必須要具備r,x許可權2. 以bash程式執行: bash shell.sh 或 sh shell.shshell.sh 只要有r許可權即可3. 利用 source 來執行,在父程式中執行 特殊符號雙引號 允許引用,\轉義單引號 禁止引用、轉義反撇號,或者 $() 以命令輸出進行替換 前一個命令的狀態值$? 0為正常、非0異常 expr命令,計算運算式如: expr 45 - 32 expr 12 /* 11 $[]運算式,算式替換如: echo $[45+12] x=45;y=11;echo $[x-y] 變數遞增,遞減let 變數名++let 變數名--let 變數名+=2 隨機數echo $RANDOMecho $[RANDOM%100] $(seq 1 100) # seq 為 sequence(連續) 的縮寫,從1到100的連續數seq 首數 末數seq 首數 增量 末數 產生隨機字串head -n 1 /dev/urandom | md5sum | cut -b 1-8 test指令利用test指令檢測系統上某些檔案或屬性 中括弧“[]”進行判斷如: [ "$HOME" == $"MAIL" ] [ "$yn" == "N" -o "$yn" == "n" ] -e 是否存在-f 是否是檔案-d 是否是目錄-r 讀許可權read-w 寫入權限write-x 執行許可權excution-z 是否為空白-eq 等於-ne 不等於-gt 大於-lt 小於-ge 大於等於-le 小於等於! 否 script 參數scriptname opt1 opt2 opt3 opt4 $0 $1 $2 $3 $4$# 參數個數$@ 參數的全部內容 if判斷語句if []; then elif []; thenfi case判斷1.以case開頭,以esac結束2.每一個變數用雙引號括起來,以小括弧")"結束3.程式段落以";;"結束4.用*來代表其他值 case $變數名稱 in <==關鍵詞為 case ,還有變數前有錢字型大小 "第一個變數內容") <==每個變數內容建議用雙引號括起來,關鍵詞則為小括弧 ) 程式段 ;; <==每個類刪結尾使用兩個連續的分號來處理! "第二個變數內容") 程式段 ;; *) <==最後一個變數內容都會用 * 來代表所有其他值 ,不包含第一個變數內容與第二個變數內容的其他程式執行段 exit 1 ;; esac 在shell script 當中的 function 一定要在程式的最前面函數名稱代表示 $0 ,而後續接的參數也是以 $1, $2... 來表示的 迴圈while [ condition ] <==中括弧內的狀態就是判斷式do <==do 是迴圈的開始!程式段落done <==done 是迴圈的結束 until [ condition ]do程式段落done for var in con1 con2 con3 ...do程式段done for (( 初始值; 限制值; 執行步階 ))do程式段done sh [-nvx] scripts.sh選項參數:-n :不要執行 script,僅查詢文法的問題;-v :在執行 sccript 前,先將 scripts 的內容輸出到螢幕上;-x :將使用到的 script 內容顯示到螢幕上,這是很有用的參數! 可使用 sh -x script.sh 來進行程式的 debug