大多数解析 /proc/cmdline 的脚本将其分解为单词,然后使用 case 语句过滤掉参数,例如:
CMDLINE="quiet union=aufs wlan=FOO"
for x in $CMDLINE
do
»···case $x in
»···»···wlan=*)
»···»···echo "${x//wlan=}"
»···»···;;
»···esac
done
问题是当 WLAN ESSID 有空格时。用户期望设置wlan='FOO
BAR'(如 shell 变量)然后'FOO
使用上述代码得到意想不到的结果,因为 for 循环在空格上拆分。
有没有更好的方法/proc/cmdline
从几乎无法评估它的 shell 脚本中解析它?
还是有一些引用技巧?我在想我也许可以要求用户实体引用空格并像这样解码:/bin/busybox httpd -d "FOO%20BAR"
. 或者这是一个糟糕的解决方案?