前端之家收集整理的这篇文章主要介绍了
Bourne shell:将$2到$N的参数发送到可变参数函数?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
谷歌终于让我失望了.我似乎无法在Bourne
shell脚本中找到如何执行此操作:
我正在编写一个shell脚本来处理我对项目的所有测试.我为这个脚本可以执行的每个任务设置函数(构建,运行,清理等),并且希望将任何其他命令行参数(除了命令本身)传递到所需的函数.
例:
./test.sh build -j应该将-j传递给构建函数.
此逻辑的伪代码版本如下所示:
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