Не удается сопоставить регулярное выражение в равенстве строк - PullRequest
1 голос
/ 08 июня 2019

Я просто не могу сопоставить ход $ с регулярным выражением, ход - это шахматный ход, т. Е. "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 Ответ

3 голосов
/ 08 июня 2019

Не указывайте свой шаблон регулярных выражений в условии if.Это делает его похожим на простой тест на равенство строк.Используйте переменную без кавычек:

  read move
  pattern="[a-h][1-8] [a-h][1-8]"
  if [[ $move =~ $pattern ]] ; then

Внутри двойных квадратных скобок вам также не нужно указывать переменную $move.

Кроме того, не используйте одиночные квадратные скобки в Bash-специфичный скрипт.

    if [[ $move_valid = true ]] ; then

Кстати, я не вижу, где эта переменная установлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...