shell函数设置变量*和*返回字符串

时间:2013-12-26 20:08:20

标签: shell command-line-arguments

我有一个必须从命令行参数设置一些变量的函数 并返回一个包含其余命令行参数的字符串。

args=" -i '1' -r '2' -- '3' '4'"

parse_command_line_args () {    # $1=getopt string                             
    # set variables from options, print remaining args                          
    eval set -- $1
    while [ $# -gt 0 ]; do
        case "$1" in
            --)
                shift; break ;;
            -i|-o|-r|-n)
                eval "${1#-}=\"\${2}\""
                shift ;;
            *)
                exit 1
        esac
        shift
    done
    getopt -s sh -o '' -- "$@"
}

现在我意识到这将永远不会奏效,因为如果我做的话

parse_command_line_args "$args"

它设置变量但其余参数在标准中丢失 输出,如果我这样做

rest="$(parse_command_line_args "$args")"

我有其余的参数,但变量丢失了,因为它是 在子壳中执行。

那么,我该如何解决这个问题?

0 个答案:

没有答案