我有以下非常简单的脚本:
#!/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
知道为什么会失败吗?
答案 0 :(得分:5)
在函数内部,$#
,$@
和$1
以及向前引用函数的参数列表,而不是脚本。 ($0
是一个例外,它仍将引用脚本本身第一个argv位置传递的名称;请注意,虽然这通常是 脚本的名称,但这并不牢固保证是真的。)
将脚本的参数传递给函数:
checkCmdLineArgs "$@"