简单Unix语句不工作

简单Unix语句不工作,unix,if-statement,Unix,If Statement,对不起,我是UNIX新手。我有一个在我的NAS上运行的脚本,它只需检查我的IP是什么,并运行一个脚本,在更改后重新连接VPN 注意:我已经将下面IP中的前四个数字改为“x”,因为这个示例我知道它们需要反映我的真实IP地址 谁能告诉我为什么if-else状态不运行。在我的日志中,我得到了以下信息。我猜这句话一定是有错误的,否则会引起一些共鸣,而目前它并没有。这可能只是一个语法错误,或者w3m-dump在运行if-else之前没有得到它的结果,因为我不知道有足够的UNIX进行调试。任何帮助都将是惊人

对不起,我是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
有两种方法可以修复它:

  • 使用/bin/bash(如果可能的话)
  • 使用“=”而不是“=”进行比较

  • 这个问题提供了更多信息/背景

    echo“$(…)”
    总是多余的。只需执行
    date+%d/%m/%Y”
    虽然使用“=”而不是“==”是正确的,但这并不能解决问题。如果条件中的语法无效,则应执行语句的
    else
    部分。@Williampersell
    else
    部分是否可以独立于
    If
    执行?不确定脚本是如何详细解释的,但是如果
    if
    的语法被破坏了,这不扩展到整个语句的其余部分吗?只是好奇而已。用
    ===
    试试看。shell尝试调用该命令,如果出现语法错误,该命令将失败。shell通过运行
    else
    子句中的命令来响应该故障。语法错误不是shell语法错误,只是传递给
    测试
    [
    命令的参数列表中的一个错误。@williampersell Cool..学到了一些新的东西,谢谢。事实证明,在原始脚本(和我的测试脚本)中,我一直收到一个“意外的运算符错误”但是,
    else
    子句总是执行。我想我太专注于查找错误源了,以至于没有注意错误消息之后的额外输出。
    Current ip: Current IP Address: XX.XX.148.73
    16 / 05 / 2012
    18 : 50 : 01