Bash正则表达式被视为字符串而不是正则表达式

时间:2019-10-18 04:43:26

标签: regex bash

有人可以解释为什么下面的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 个答案:

答案 0 :(得分:5)

如果将=~的右侧用引号引起来,则右侧将被视为字符串而不是正则表达式。