正则表达式的bash条件

时间:2013-10-25 13:58:11

标签: linux bash

我要学习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

当我输入数字或字符条件为真。我的意思是我在输出中有回音“消息”。

2 个答案:

答案 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