14 string=123456 if [ $string == 123456 ]; then echo 123 fi 这可以正常工作,但是如果我将==更改为=〜,则会收到此错误: ./test: line 3: [: =~: binary operator expected bash shell-script — 雾化 source =~在这种情况下,使用是错误的。=~将模式(分配的左侧)与分配regex右侧的常规表达式进行比较。以最简单的形式传递正则表达式,例如'[0-9][0-9]' — Valentin Bajrami 9 @ val0x00ff但是123456有效的RE — roaima @roaima同意,但是正则表达式是著名的发动机,后引用,字符集,字符元表示字符串的开始,字符串等的结局 — 瓦伦丁巴伊拉米
29 Bash的正则表达式匹配仅在双方括号内起作用[[ ... ]]: string=123456 if [[ "$string" =~ 123456 ]]; then echo 123; fi 123 — 罗曼·佩列赫雷斯特 source @Kusalananda:关于编辑,双括号表达式的左手边不需要引号[[ ... ]],因为那里没有单词拆分或路径名扩展。仅在使用单括号[ ... ](两侧)时以及在双括号表达式的右侧时才需要使用它们。 — user000001 17-10-23 @ user000001正确时,最好通过反射引用所有变量,除非有必要不要这样做。这是一个更安全的习惯。 — 乔 @Joe:同意,如果有疑问,请报价。。。我之所以只提到它,是因为这是对已经正确答案的修改。如果从第一个修订版开始,我就不会对此发表评论。 — user000001 17-10-28
=~
在这种情况下,使用是错误的。=~
将模式(分配的左侧)与分配regex
右侧的常规表达式进行比较。以最简单的形式传递正则表达式,例如'[0-9][0-9]'