-1

可能重复:
Unix 基本验证

嗨,我对 Unix 很陌生,我试图让我的程序将输入的数字总和相加,它有一个验证器,可以在输入字符时告诉用户。

例如,这就是我想要它做的。

add2 4 -3 十二九 抱歉,“十二”不是数字

这是我当前的代码有人可以告诉我我做错了什么吗?

 #!/bin/bash

 sum=0

 for numbers in $@

 if ![["$numbers" =~ ^[0-9]+$ ]]  

 then
    exec >&2; echo "error: numbers" exit 1
 fi

 do

 sum=$((sum + numbers))

 done

 echo "$sum"
4

2 回答 2

2

脚本:

#!/bin/bash
sum=0
for number in $@
do
    if [[ $number =~ [0-9]+$ ]]
    then
        sum=`expr $sum + $number`
    else
        echo "error: $number is not a number"
        exit 1
    fi
done
echo "$sum"

样品运行:

$ ./sum.sh 1 2 3 4 5 6
21
$ ./sum.sh 1 2 3 4 5 6 seven
error: seven is not a number
于 2012-12-02T03:35:40.360 回答
0

使用良好的 bash 实践来做到这一点,即使用引号,并避免可怕的反引号并使用 shell 算法((...))

#!/bin/bash
sum=0
for number in "$@"; do
if [[ "$number" =~ ^[+-]?[[:digit:]]+$ ]]; then
    ((sum+=number))
else
    echo >&2 "error: $number is not a number"
    exit 1
fi
done

echo "$sum"
于 2012-12-02T10:27:45.260 回答