給定一個 bash 函數:
function f1 {
echo "The function f1 is being called with ??? argument(s)."
}
和兩個調用:
f1 arg1
f1 arg1 arg2
如何取得傳遞的參數數量?期望的輸出:
The function f1 is being called with 1 argument(s).
The function f1 is being called with 2 argument(s).
答案1
您可以使用
$#
看man bash
更多 bash 提示
答案2
使用特殊參數
$#
它傳回給 shell 呼叫的位置參數的數量。
從man bash
...
$1 - $9 這些變數是位置參數。
$0 目前正在執行的命令的名稱。
$# 為本次 shell 呼叫提供的位置參數的數量。
$?最後執行的命令的退出狀態以十進位字串形式給出。當指令成功完成時,它會傳回退出狀態 0(零),否則傳回非零退出狀態。
$$ 該 shell 的進程號 - 用於包含在檔案名稱中,使它們唯一。
$!最後一個在背景運行的命令的進程 ID。
$- 提供給 shell 呼叫的目前選項。
$* 包含 shell 的所有參數的字串,從 $1 開始。
$@ 與上方相同,除非引用。
這些特殊參數對於收集有關目前 shell 的資料非常有用。