如何找出實際傳遞給 bash 函數的參數數量?

如何找出實際傳遞給 bash 函數的參數數量?

給定一個 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 的資料非常有用。

相關內容