加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:21:51 所属栏目:安全 来源:网络整理
导读:谷歌终于让我失望了.我似乎无法在Bourne shell脚本中找到如何执行此操作: 我正在编写一个shell脚本来处理我对项目的所有测试.我为这个脚本可以执行的每个任务设置函数(构建,运行,清理等),并且希望将任何其他命令行参数(除了命令本身)传递到所需的函数. 例:
谷歌终于让我失望了.我似乎无法在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读