简单Unix语句不工作
对不起,我是UNIX新手。我有一个在我的NAS上运行的脚本,它只需检查我的IP是什么,并运行一个脚本,在更改后重新连接VPN 注意:我已经将下面IP中的前四个数字改为“x”,因为这个示例我知道它们需要反映我的真实IP地址 谁能告诉我为什么if-else状态不运行。在我的日志中,我得到了以下信息。我猜这句话一定是有错误的,否则会引起一些共鸣,而目前它并没有。这可能只是一个语法错误,或者w3m-dump在运行if-else之前没有得到它的结果,因为我不知道有足够的UNIX进行调试。任何帮助都将是惊人的简单Unix语句不工作,unix,if-statement,Unix,If Statement,对不起,我是UNIX新手。我有一个在我的NAS上运行的脚本,它只需检查我的IP是什么,并运行一个脚本,在更改后重新连接VPN 注意:我已经将下面IP中的前四个数字改为“x”,因为这个示例我知道它们需要反映我的真实IP地址 谁能告诉我为什么if-else状态不运行。在我的日志中,我得到了以下信息。我猜这句话一定是有错误的,否则会引起一些共鸣,而目前它并没有。这可能只是一个语法错误,或者w3m-dump在运行if-else之前没有得到它的结果,因为我不知道有足够的UNIX进行调试。任何帮助都将是惊人
Current ip: Current IP Address: XX.XX.148.73
16 / 05 / 2012
18 : 50 : 01
有两种方法可以修复它:
这个问题提供了更多信息/背景
echo“$(…)”
总是多余的。只需执行date+%d/%m/%Y”
虽然使用“=”而不是“==”是正确的,但这并不能解决问题。如果条件中的语法无效,则应执行语句的else
部分。@Williampersellelse
部分是否可以独立于If
执行?不确定脚本是如何详细解释的,但是如果if
的语法被破坏了,这不扩展到整个语句的其余部分吗?只是好奇而已。用===
试试看。shell尝试调用该命令,如果出现语法错误,该命令将失败。shell通过运行else
子句中的命令来响应该故障。语法错误不是shell语法错误,只是传递给测试或[
命令的参数列表中的一个错误。@williampersell Cool..学到了一些新的东西,谢谢。事实证明,在原始脚本(和我的测试脚本)中,我一直收到一个“意外的运算符错误”但是,else
子句总是执行。我想我太专注于查找错误源了,以至于没有注意错误消息之后的额外输出。
Current ip: Current IP Address: XX.XX.148.73
16 / 05 / 2012
18 : 50 : 01