Bash 字符串比较在 BusyBox 上不起作用
Bash string comparison not working on BusyBox
我不明白为什么这个 bash 脚本不能在内置的 BusyBox v1.29.3 () 上运行 shell (ash)。
代码如下:
#!/bin/sh
MODE=$(cat /etc/config/wireless | grep 'option mode') #not working
#MODE="option mode 'sta'" ==> this works
echo $MODE
MCHECK="option mode 'sta'"
echo $MCHECK
if [ "$MCHECK" = "$MODE" ];then
ping -c3 www.google.com > /dev/null
a=$?
echo $a
if [ $a -eq 0 ];then
echo "ok"
else
echo "fail"
fi
else
echo "no sta mode"
fi
如果我 "force" 带有变量的字符串,它可以正常工作。(#MODE)
我想 cat returned 变量中有一些字符创建了不同的字符串。
我总是 "no sta mode" 所以 if 不会 return 为真。
etc/config/wireless中的选项模式与要比较的字符串相同。
找不到我错过了什么..?
以下问题给出了一个带前导零的字符串。
MODE="$(cat /etc/config/wireless | grep 'option mode')"
以下给出相同的结果,没有前导空格。
MODE="$(cat /etc/config/wireless | sed -n 's/\s*\(option mode.*\)//p'"
我不明白为什么这个 bash 脚本不能在内置的 BusyBox v1.29.3 () 上运行 shell (ash)。
代码如下:
#!/bin/sh
MODE=$(cat /etc/config/wireless | grep 'option mode') #not working
#MODE="option mode 'sta'" ==> this works
echo $MODE
MCHECK="option mode 'sta'"
echo $MCHECK
if [ "$MCHECK" = "$MODE" ];then
ping -c3 www.google.com > /dev/null
a=$?
echo $a
if [ $a -eq 0 ];then
echo "ok"
else
echo "fail"
fi
else
echo "no sta mode"
fi
如果我 "force" 带有变量的字符串,它可以正常工作。(#MODE) 我想 cat returned 变量中有一些字符创建了不同的字符串。
我总是 "no sta mode" 所以 if 不会 return 为真。 etc/config/wireless中的选项模式与要比较的字符串相同。
找不到我错过了什么..?
以下问题给出了一个带前导零的字符串。
MODE="$(cat /etc/config/wireless | grep 'option mode')"
以下给出相同的结果,没有前导空格。
MODE="$(cat /etc/config/wireless | sed -n 's/\s*\(option mode.*\)//p'"