如何在 Bash 中解析命令行参数(作为键值对)?带参数说嵌套分隔符

bud*_*ddy 4 linux bash

当我将等于的命令行参数解析为可以嵌套等于的分隔符时。CC="arm-oe-linux --sysroots=/home/somelocation" CFLAGS="" 我试过这个:

for ARGUMENT in "$@"
do
    KEY=$(echo $ARGUMENT | cut -f1 -d=)
    VALUE=$(echo $ARGUMENT | cut -f2 -d=)   

   echo $KEY
   echo $VALUE
   echo "*******************"

    case "$KEY" in

            CC)    CC=${VALUE} ;;     
        CFLAGS)    CFLAGS=${VALUE} ;;     
             *)   
    esac    
done
Run Code Online (Sandbox Code Playgroud)

但是对于嵌套 = 这没有帮助。有什么建议?

PSk*_*cik 8

使用shell 语言来做字符串的事情。无需创建昂贵的进程来分割第一个等号上的字符串。

(此外,通常建议对未导出的变量使用小写变量名。)

for argument; do #syntactic sugar for: for argument in "$@"; do
    key=${argument%%=*}
    value=${argument#*=}

    echo "$key"
    echo "$value"
    echo "*******************"

    case "$key" in

            CC)    CC=$value;;
        CFLAGS)    CFLAGS=$value;;
    esac    
done
Run Code Online (Sandbox Code Playgroud)