字符串相等时无法匹配正则表达式

时间:2019-06-08 12:55:58

标签: bash

我只是不能将$ move与正则表达式匹配,move是国际象棋的棋步。 “ a2 a4”。它总是到其他部分...谢谢您的帮助

read move
if [[ "$move" =~ "[a-h][1-8] [a-h][1-8]" ]] ; then
  CheckMove "$move" 1
else 
  printf "Invalid move format \n"
fi

1 个答案:

答案 0 :(得分:3)

请勿在{{1​​}}条件内引用您的正则表达式模式。这使其像一个简单的字符串相等性测试。使用无引号的变量:

if

在双方括号内,您也不需要引用 read move pattern="[a-h][1-8] [a-h][1-8]" if [[ $move =~ $pattern ]] ; then 变量。

此外,请勿在Bash特定的脚本中使用单个方括号。

$move

顺便说一下,我看不到该变量的设置位置。