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

但是,对于嵌套=则无济于事.有什么建议么?

解决方法:

使用shell language执行字符串操作.无需创建昂贵的进程,只需在第一个等号上分割字符串即可.

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

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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...