条件表达式的语法与正则表达式的比较

条件表达式的语法与正则表达式的比较

我尝试在我的 Ubuntu 机器上执行下面的代码,但它一直显示“条件表达式中的语法错误”和“'0-9'附近的语法错误”,你能告诉我为什么吗?

while ! [[ $num =~ ^[ 0-9 ] +$ && $num = 0 ]] ; do 

答案1

你的 while 不应该大写,但我认为这只在输入这个问题时才会发生,否则你会得到一个不同的错误。

您的问题可能只是您的正则表达式错误。

[ 0-9 ]应该[0-9]没有空格。然而,一旦解决了这个问题,您将得到一个不同的错误,+$因为您还需要转义它们之间的空间。

while ! [[ $num =~ ^[0-9]\ +$ && $num = 0 ]] ; do 

通常最好将这样的模式存储在变量中以供扩展测试使用:

pattern='^[0-9] +$'
while ! [[ $num =~ $pattern && $num -eq 0 ]]; do

相关内容