给定一个 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 的数据非常有用。