我要学习bash编程。我刚写了一个简单的脚本,以便从输入流中读取数字,并使用正则表达式检查它们是否为有效的数字格式。 事实上,脚本应该输入,直到输入是非数字的。 但它无法正常工作。
代码:
i=0
echo "plz enter number in valid format: "
while true
do
read input
if [[ $input =~ *[^0-9]* ]]; then
echo "YOU DIDN'T ENTER A VALID NUMBER"
break
else
arr[$i]=$input
echo $input >> inputnums
fi
done
当我输入数字或字符条件为真。我的意思是我在输出中有回音“消息”。
答案 0 :(得分:3)
你将shell globing与regex混合,将你的if条件更改为:
if [[ $input =~ [^0-9] ]]; then
正则表达式应该使用shell shell glob使用的.*
而不是*
。
答案 1 :(得分:1)
从正则表达式中删除*
:
#!/bin/bash
i=0
echo "plz enter number in valid format: "
while true
do
read input
if [[ $input =~ ^[^0-9]+$ ]]; then
echo "YOU DIDN'T ENTER A VALID NUMBER"
break
else
arr[$i]=$input
echo $input
fi
done