谷歌终于让我失望了。我似乎无法在 Bourne shell 脚本中找到如何执行此操作:
我正在编写一个 shell 脚本来处理我对一个项目的所有测试。我已经为该脚本可以执行的每个任务(构建、运行、清理等)设置了函数,并希望将任何其他命令行参数(除了命令本身)传递给所需的函数。
例子:./test.sh build -j
应该通过-j
进build
功能。
此逻辑的伪代码版本如下所示:
function build() {
make $*
}
if [ $1 == 'build' ]; then
build $2 -> $N
fi
我怎样才能做到这一点?
最佳答案
我认为您可以使用 shift
实现这种效果。命令。它将所有位置参数下移一位并降低 $1
的值。 (因此 $3
的值移动到 $2
, $2
的值移动到 $1
并且 $1
的值丢失)。完成后,您可以使用 $@
选择您真正感兴趣的参数列表,例如
function build() {
echo "build with $@"
}
echo "Starting args are $@"
cmd=$1
shift
if [ "$cmd" = 'build' ]; then
build "$@"
fi
关于shell - 伯恩 shell : send arguments $2 to $N to variadic function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002954/