我有一个必须从命令行参数设置一些变量的函数 并返回一个包含其余命令行参数的字符串。
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")"
我有其余的参数,但变量丢失了,因为它是 在子壳中执行。
那么,我该如何解决这个问题?