猛击“if”条件

时间:2018-06-08 13:33:36

标签: bash

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”不执行)。

有人能教育我为什么吗?我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

你必须引用$GETIPADDR的扩展;否则,在[运行之前,会从命令行中删除空字符串,并且会出现语法错误。

if [ "$GETIPADDR" = "" ]; then

如果变量为空,则代码等同于

if [ = "" ]; then

if [ "" = "" ]; then

检查空字符串的首选方法是使用-z运算符:

if [ -z "$GETIPADDR" ]; then