shell script 對我來說是個「目的性」很強的語言,雖然每天都要使用,但直接在指令列使用和寫成 xxx.sh 總感覺不是同一件事(而且我其實用的是 zsh)。由於缺乏系統性的學習,儘管日常使用沒有問題,但要寫成檔案時還是感覺生疏,其實我連 if 判斷怎麼下都不是非常肯定(一點都不誇張,if condition 一個方括號和兩個方括號的差別我也是最近才知道)。
因此,我覺得有必要稍微補強這方面的知識,作點筆記應該會有幫助。這篇用來記錄 bash 內建變數,在寫 shell script 時,如果可以善用內建的變數,指令看起來會更簡潔易讀。
指令列表
| 內建變數 | 解釋 | 用途 |
|---|---|---|
| $# | 參數數量 | |
| $* | 所有參數(合起來當成「一個」字串,"$1 $2 ...") | |
| $@ | 所有參數(每個參數當作獨立的字串,"$1" "$2" ...) | |
| $_ | 上一個指令的最後一個參數 | |
| $- | 傳遞給指令的 flag | |
| $? | 最後執行指令的回傳值(exit code) | 檢查上一個指令或函式是否正確 |
| $$ | 指令自身的 process ID | 常用來創造一個臨時的檔名 |
| $! | 最後一個背景執行指令的 process ID | |
| $0 | 指令名稱(指令路徑) | |
| $n | 第 n 個參數(index 從 1 開始) |