如何找出实际传递给 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 的数据非常有用。

相关内容