当我运行此脚本时:
#!/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'
我已经尝试了我发现的所有建议,但仍然是相同的:/ 请帮帮我!
答案 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版本中得到的错误相同。