其他人的代码中出现未知错误

其他人的代码中出现未知错误

我正在尝试安装程序,但在配置它时不断收到此错误消息:

/configure: 919: [: unexpected operator

我查看了代码,这是位于配置文件的该部分的内容:

    if [ "$USENETCDFPAR" == "1" ] ; then
      echo "Using parallel NetCDF via NETCDFPAR option"
    fi
    echo " "

在网上查看后,我知道第一行有问题。但人们建议的任何更改都无法解决这个问题。有人有什么想法吗?

答案1

这里的“意外操作符”实际上是==

在 POSIX shell 中,字符串相等性的测试运算符是=

$ sh -c '[ "a" = "a" ] && echo equal'
equal

然而

$ sh -c '[ "a" == "a" ] && echo equal'
sh: 1: [: a: unexpected operator

===在 bash shell 中是 的同义词。来自CONDITIONAL EXPRESSIONS的部分man bash

   string1 == string2
   string1 = string2
          True if the strings are equal.  = should be used with  the  test
          command  for  POSIX conformance.

因此脚本的开发人员可能在一个/bin/sh有符号链接的系统上工作bash,而在 Ubuntu 上,它是指向 POSIX 兼容 shell 的符号链接dash

您可以==在测试括号=内替换[ ... ],或者将脚本的 shebang 行更改为#!/bin/bash

相关内容