语法错误在= =运算符附近

时间:2014-07-12 14:27:33

标签: regex bash shell operator-keyword conditional-operator

当我运行此脚本时:

#!/bin/bash

if [[ "abcd" =~ ^.*$ ]]; then
    echo "something"
fi

我明白了:

./tmp2.sh: line 3: conditional binary operator expected
./tmp2.sh: line 3: syntax error near `=~'
./tmp2.sh: line 3: `if [[ "abcd" =~ ^.*$ ]]; then'

我已经尝试了我发现的所有建议,但仍然是相同的:/ 请帮帮我!

4 个答案:

答案 0 :(得分:6)

鉴于您看到了特定于bash的错误消息,我们可以排除 某些其他而不是{{ 1}} 正在运行脚本(如果它是一个仅限POSIX功能的shell,例如某些系统上的bash,则会看到与sh相关的错误消息)

最可能的解释:

  • 您的 [[版本为bash ,因此不支持< 3.0运营商。
    • 要验证,请在脚本中运行=~

你看到的具体错误是bash的说法:“我看到一个字符串我不认识为操作员。”

答案 1 :(得分:3)

使用bash script.sh而不是sh script.sh运行您的脚本。如果./script.sh已经可执行,那么它可能也适用于script.sh,因为您正在使用标题#!/bin/bash

答案 2 :(得分:1)

这应该有效

re='^.*$'
if [[ "abcd" =~ $re ]]; then
  echo "something"
fi

答案 3 :(得分:-1)

这几乎与如果您放置~=而不是=~时在所有支持正则表达式的bash版本中得到的错误相同。