說起Shell腳本,免不了用變量。特別是對於這種一堆符號表示變量的語言來說,你不了解一下相關變量的本意,根本無從下手。譬如寫個循環遍歷,$#就起了好大作用。所以還是有必要記錄一下,也是對學習的一個筆記,方便以后查找。
另外有一些運算符也相當有意思。
//---------------------分割線,下文為筆記內容-------------------------
變量相關的命令
export, readonly
export:用於修改或打印變量
readonly:設置變量為只讀
替換運算符
${var:
-word}
如果var存在且非null,返回它的值;否則返回word
${var:
=word}
如果var存在且非null,返回它的值;否則將word賦值給var,並返回var的值
${var:
?word}
如果var存在且非null,返回它的值;否則顯示var:word
${var:
+word}
如果var存在且非null,返回word;否則返回null
注:冒號(:)可省略
模式匹配運算符
${var#pattern}
匹配前綴(最小匹配),並返回余下內容
${var##pattern}
匹配前綴(最大匹配),並返回余下內容
${var%pattern}
匹配結尾(最小匹配),並返回余下內容
${var%%pattern}
匹配結尾(最大匹配),並返回余下內容
注:pattern為正則表達式匹配
算術運算符
Shell的算術運算符基本上與C一致,就不多說了。
算術運算符可以放置在$((...))里面,也就是內嵌算術,也稱為算術展開。譬如 echo $((2>1)) 打印結果為1。(1表示真,0表示假)
特殊變量
$#
表示變量的個數,常用於循環
$@
當前命令行所有參數。置於雙引號中,表示個別參數
$*
當前命令行所有參數。置於雙引號中,表示將命令行所有參數當初一個單獨參數
$-(連字號)
在引用數給予Shell的選項
$?
表示上一個命令退出的狀態
$$
表示當前進程編號
$0
表示當前程序名稱
$!
表示最近一個后台命令的進程編號
$HOME
表示當前用戶根目錄
$IFS
表示內部的字段分隔符
$LANG
當前locale默認名稱
$PATH
環境變量
$PPID
父進程編號
$PWD
當前工作目錄
$?的參考值
0
成功退出
>0
退出失敗
1-125
命令退出失敗,失敗返回的相關值由程序定義(譬如,程序內退出只執行 exit 2,則返回為2)
126
命令找到了,但無法執行
127
命令找不到
>128
命令因受到信號而死亡