1

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

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

4

2 回答 2

3

您正在将 shell globing 与正则表达式混合,将您的 if 条件更改为:

if  [[ $input =~ [^0-9] ]]; then

正则表达式不应使用shell shell glob 所使用的.**

于 2013-10-25T14:02:26.377 回答
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
于 2013-10-25T14:06:42.110 回答