歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux Shell編程學習筆記

Linux Shell編程學習筆記

日期:2017/3/1 15:29:31   编辑:SHELL編程
Linux Shell編程學習筆記 登陸Shell,用戶每次登陸系統後自動加載的Shell程序 大多數Linux系統采用 /bin/bash 作為默認登陸Shell /etc/shells 文件記錄系統支持的Shell 系統可以使用的shells,記錄在/etc/shells檔案中 cat /etc/shells echo $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.sh shell.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 $RANDOM echo $[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 []; then fi 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
Copyright © Linux教程網 All Rights Reserved