我有以下非常简单的脚本:
#!/bin/bash
checkCmdLineArgs() {
echo -e "num input args $#"
if (( $# == 0 )); then
echo "$0 usage: install_dir home_dir"
exit 255
fi
}
checkCmdLineArgs
Run Code Online (Sandbox Code Playgroud)
这是行不通的.如果我像这样运行它:
./test.sh foo bar
Run Code Online (Sandbox Code Playgroud)
它输出:
num input args 0
./test.sh usage: install_dir home_dir
Run Code Online (Sandbox Code Playgroud)
知道为什么会失败吗?
里面的功能,$#,$@,和$1并向前指的是函数的参数列表,而不是脚本.($0是一个例外,并且仍然会引用脚本本身在第一个argv位置传递的名称;请注意,虽然这通常是脚本的名称,但这并不能保证是真的).
将脚本的参数传递给函数:
checkCmdLineArgs "$@"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37 次 |
| 最近记录: |