我尝试在我的 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