当我使用等于作为分隔符解析命令行参数时,可以嵌套等于.
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