在bash脚本中处理形式的参数--argname =“value1 value2”

时间:2018-03-02 15:45:46

标签: bash shell

我想允许我的bash脚本foo接受如下参数:

> foo --arg-name="argval1 argval2 ..."

这样我可以访问变量中的参数值,就像我已经定义它一样

    ARG_NAME="argval1 argval2 ..."

到目前为止,我已尝试过ARG_NAME=${1#*=},但这只接受

形式的参数
> foo "--arg-name=\"argval1 argval2 ...\""

这并不是一个不错的解决方案。

我很欣赏在不使用getopts解决方案的情况下使用纯bash的解决方案。

1 个答案:

答案 0 :(得分:0)

首先,获取getoptlong

然后查看此演示:

#!/bin/bash

# ( long_option ) 0 or no_argument,
# 1 or required_argument, 2 or optional_argument).

Help() {
cat<<HELP
Usage :
    $0 [ --install-modules <liste des modules> ] [-h|--help]
HELP
    exit 0
}

. /PATH/TO/getopts_long.sh

OPTLIND=1
while getopts_long :h opt \
    install-modules 1 \
    help 0 "" "$@"
do
    case "$opt" in
        install-modules)
            echo $OPTLARG
        ;;
        h|help)
            Help; exit 0
        ;;
        :)
           printf >&2 '%s: %s\n' "${0##*/}" "$OPTLERR"
           Help
           exit 1
        ;;
    esac
done
shift "$(($OPTLIND - 1))"