我正在尝试在case语句中匹配5到7个数字的字符串.我没有尝试过任何成功的工作.这是我尝试过的事情之一.
^[0-9]*$ )
echo "Got it!"
;;
Run Code Online (Sandbox Code Playgroud)
我该如何成功完成?
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)