如何匹配bash case语句中的数字字符串

Jos*_*iah 0 bash numeric case

我正在尝试在case语句中匹配5到7个数字的字符串.我没有尝试过任何成功的工作.这是我尝试过的事情之一.

^[0-9]*$ ) 
  echo "Got it!" 
  ;;
Run Code Online (Sandbox Code Playgroud)

我该如何成功完成?

Mar*_*eed 5

bash case语句中的模式是文件globs,而不是正则表达式.您最好的选择可能是if/else链而不是case:

if [[ "$string" =~ ^[0-9]{5,7}$ ]]; then
  echo "Got it!"
fi
Run Code Online (Sandbox Code Playgroud)

但是,如果您对确切的长度不那么挑剔,可以使用扩展的glob特征来匹配"1个或更多个数字":

shopt -s extglob
case "$string" in
  (+([0-9])) echo "Got it!";;
esac
Run Code Online (Sandbox Code Playgroud)