首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将bash脚本中收到的选项传递给被调用的脚本、命令或内置

将bash脚本中收到的选项传递给被调用的脚本、命令或内置
EN

Stack Overflow用户
提问于 2017-10-16 11:01:50
回答 1查看 162关注 0票数 1

我有一个bash脚本myscript.sh。我的意思是从其中调用另一个脚本、命令或内置,例如,diff。我的意思是将选项传递给myscript.sh,其中一些选项将在调用它时传递给diff

实现这一点的方法是通过getopt设置一个选项字符串getopt,然后使用

代码语言:javascript
运行
复制
eval "diff ${optstring} ${file} ${TRG_DIR}/${filebase2}"

到目前为止,它起了作用,但我不知道在用通配符传递论点时是否容易出现问题,等等。

有更好的方法吗?

我设置optstring的方式是

代码语言:javascript
运行
复制
set -o errexit -o noclobber -o nounset -o pipefail
params="$(getopt -o qy --long brief,side-by-side,suppress-common-lines --name "$0" -- "$@")"

if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi

echo params=$params
echo params=$@

eval set -- "$params"

optstring=""
# These variables are likely not needed
brief=false
sbs=false
scl=false

#while false ; do
while true ; do
    case "$1" in
        -q|--brief)
            optstring=${optstring}" -q"
            brief=true
            echo "brief"
            shift
            ;;
        -y|--side-by-side)
            optstring=${optstring}" -y"
            sbs=true
            echo "side-by-side"
            shift
            ;;
        --suppress-common-lines)
            optstring=${optstring}" --suppress-common-lines"
            scl=true
            echo "suppress-common-lines"
            shift
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Not implemented: $1" >&2
            exit 1
            ;;
    esac
done
echo optstring=${optstring}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-16 11:05:40

使用数组。数组可以用空格处理多个字参数。使用以下方法初始化空白数组:

代码语言:javascript
运行
复制
options=()

若要附加选项,请执行以下操作:

代码语言:javascript
运行
复制
options+=(--suppress-common-lines)

最后,当您调用eval并正常调用它时,您可以摆脱diff。请确保引用所有变量展开,以防它们有空格:

代码语言:javascript
运行
复制
diff "${options[@]}" "$file" "$TRG_DIR/$filebase2"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46768775

复制
相关文章

相似问题

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