Bash регулярное выражение рассматривается как строка, а не как регулярное выражение - PullRequest
0 голосов
/ 18 октября 2019

Может кто-нибудь объяснить, почему следующий код bash будет повторять "выбор был числом!"когда я набираю, например, «1» в приглашении на чтение:

  read choice
  re='^[0-9]+$'

  if [[ $choice =~ $re ]]; then
    echo "choice was a number!"
  else
    echo "choice was NOT a number!"
  fi

... но тот же код без промежуточной переменной $re выдает «выбор не был числом!»:

  read choice

  if [[ $choice =~ '^[0-9]+$' ]]; then
    echo "choice was a number!"
  else
    echo "choice was NOT a number!"
  fi

?

1 Ответ

5 голосов
/ 18 октября 2019

Если вы поставите правую часть =~ в кавычках, то правая сторона будет обрабатываться как строка, а не как регулярное выражение.

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