我有以下非常简单的脚本:
#!/bin/bash
checkCmdLineArgs() {
echo -e "num input args $#"
if (( $# == 0 )); then
echo "$0 usage: install_dir home_dir"
exit 255
fi
}
checkCmdLineArgs
它不起作用。如果我像这样运行它:
./test.sh foo bar
它输出:
num input args 0
./test.sh usage: install_dir home_dir
知道为什么失败吗?
最佳答案
在函数内部,$#
、$@
和 $1
及以后引用函数的参数列表,而不是脚本的参数列表。 ($0
是一个异常(exception),仍然会引用在脚本本身的第一个 argv 位置传递的名称;请注意,虽然这通常是脚本的名称,但它不是不能保证是真的)。
将脚本的参数传递给函数:
checkCmdLineArgs "$@"
关于bash - 从函数内部检查脚本命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46004301/