Bourne shell:将$2到$N的参数发送到可变参数函数?

前端之家收集整理的这篇文章主要介绍了Bourne shell:将$2到$N的参数发送到可变参数函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
谷歌终于让我失望了.我似乎无法在Bourne shell脚本中找到如何执行此操作:

我正在编写一个shell脚本来处理我对项目的所有测试.我为这个脚本可以执行的每个任务设置函数(构建,运行,清理等),并且希望将任何其他命令行参数(除了命令本身)传递到所需的函数.

例:

./test.sh build -j应该将-j传递给构建函数.

此逻辑的伪代码版本如下所示:

  1. function build() {
  2. make $*
  3. }
  4.  
  5. if [ $1 == 'build' ]; then
  6. build $2 -> $N
  7. fi

我怎么能做到这一点?

我认为你可以使用shift命令实现这个效果.它会将所有位置参数向下移动一个位置并降低$1的值(因此$3的值将移至$2,$2的值将移至$1并且$1的值将丢失).一旦你完成了,你可以使用$@来获取你真正感兴趣的参数列表,例如:
  1. function build() {
  2. echo "build with $@"
  3. }
  4.  
  5. echo "Starting args are $@"
  6. cmd=$1
  7. shift
  8.  
  9. if [ "$cmd" = 'build' ]; then
  10. build "$@"
  11. fi

猜你在找的Bash相关文章