首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递参数,如果未传递BASH,则忽略它。

传递参数,如果未传递BASH,则忽略它。
EN

Stack Overflow用户
提问于 2022-10-30 15:08:42
回答 1查看 42关注 0票数 1

在使用Cli工具时遇到了一个有趣的脚本问题

-a指的是这个cli工具中的参数

在Put或Post的情况下,我必须通过两个论点。所以:

代码语言:javascript
复制
--verb "$1" \
    -a "$2" \
    -a "$3"

传入脚本

代码语言:javascript
复制
"put" "[\"name\"]" "testing this"

工作得很好!

那么,在Get的情况下,我必须传递一个论点。所以:

代码语言:javascript
复制
--verb "$1" \
    -a "$2" \
    -a "$3"

传入脚本

代码语言:javascript
复制
"get" "[\"name\"]"

当然,这将失败,因为我必须通过一个论点,但我确实通过了两个,既然现在只赞成PUT操作,您认为我如何处理这个问题,使两个PUT和得到工作?

这都是在巴什

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-30 15:13:29

对于更一般的案例处理(也将正确地处理三个以上的参数),请构造一个数组:

代码语言:javascript
复制
#!/usr/bin/env bash
case $BASH_VERSION in '') echo "ERROR: This must be run with bash, not sh" >&2; exit 1;; esac

# unconditionally, we always have a verb; assign to a variable then shift away
args=( --verb "$1" )   # this creates an array
shift                  # makes old $2 be $1, old $3 be $2, etc

# iterate over remaining arguments and add each preceded by '-a'
for arg in "$@"; do    # iterate over all args left after the shift
  args+=( -a "$arg" )  # for each, add '-a' then that arg to our array
done

# use the constructed array
runYourProgramWith "${args[@]}"

仅正确处理$3是可选的:

代码语言:javascript
复制
--verb "$1" \
    -a "$2" \
    ${3+ -a "$3" }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74254195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档