Shell 編程常用參考

Shell特殊變量 $0, $#, $*, $@, $?, $$和命令行參數

Shell 中的特殊變量參考如下表:

變量 含義
$0 當前腳本的文件名
$n 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2
$# 傳遞給腳本或函數的參數個數
$* 傳遞給腳本或函數的所有參數
$@ 傳遞給腳本或函數的所有參數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到
$? 上個命令的退出狀態,或上個函數的返回值
$$ 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID

注:$ 和 $@ 的區別*

  • $* 和 $@ 都表示傳遞給函數或腳本的所有參數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有參數。
  • 但是當它們被雙引號(" ")包含時,"$*" 會將所有的參數作爲一個整體,以"$1 $2 … $n"的形式輸出所有參數;"$@" 會將各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數。

Shell 中的 if 判斷

條件測試的表達式

  • if [ str1 = str2 ]:當兩個串有相同內容、長度時爲真
  • if [ str1 != str2 ]:當串str1和str2不等時爲真
  • if [ -n str1 ]:當串的長度大於0時爲真(串非空)
  • if [ -z str1 ]:當串的長度爲0時爲真(空串)
  • if [ str1 ]:當串str1爲非空時爲真

整數比較

  • -eq:測試兩個整數是否相等
  • -ne:測試兩個整數是否不等
  • -gt:測試一個數是否大於另一個數
  • -lt:測試一個數是否小於另一個數
  • -ge:大於或等於
  • -le:小於或等於

命令間的邏輯關係:

  • 邏輯與:&&
  • 邏輯或:||

字符串比較

字符串比較,直接用 ==、!=、>、< 等符號即可,兩邊需要有空格。

文件測試

  • -e:FILE 測試文件是否存在
  • -f:file 測試文件是否爲普通文件
  • -d:file 測試指定路徑是否爲目錄
  • -r:file 測試文件對當前用戶是否可讀
  • -w:file 測試文件對當前用戶是否可寫
  • -x:file 測試文件對當前用戶是都可執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章