当我将等于的命令行参数解析为可以嵌套等于的分隔符时。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)
但是对于嵌套 = 这没有帮助。有什么建议?
使用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)