我正在尝试安装程序,但在配置它时不断收到此错误消息:
/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