Ubuntu 16.04 ...我有一个检查外部IP地址的脚本:
GETIPADDR=`wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`
...
if [ $GETIPADDR = "" ]; then
GETIPADDR线路在正常情况下工作,$ GETIPADDR将具有外部IPv4地址的字符串值。当缺少外部连接或wget出现其他问题时,$ GETIPADDR的回显显示它没有内容,但if不返回真实条件(“then”不执行)。
有人能教育我为什么吗?我在这里做错了什么?
答案 0 :(得分:2)
你必须引用$GETIPADDR
的扩展;否则,在[
运行之前,会从命令行中删除空字符串,并且会出现语法错误。
if [ "$GETIPADDR" = "" ]; then
如果变量为空,则代码等同于
if [ = "" ]; then
不
if [ "" = "" ]; then
检查空字符串的首选方法是使用-z
运算符:
if [ -z "$GETIPADDR" ]; then