检查参数是否是shell脚本中的数字

时间:2012-10-30 20:22:54

标签: shell

  

可能重复:
  How do I test if a variable is a number in bash?

我尝试通过shell脚本编写斐波纳契序列,例如,如果用户在命令行中的脚本名称之后输入5,则脚本需要从头开始打印出5个斐波那契数字:

0 1 1 2 3 

我已经完成了脚本但是我需要检查用户输入是否为正数我在这部分有问题。 在命令行中,用户应调用脚本,然后输入正数

./script number

这是我的代码:

#!/bin/sh
[ $# -ne 1 ] && { echo "enter a number please" ; exit 1 ; } 
[ ! echo $1 | egrep -q '^[0-9]+$' &&  $1 -lt 0  ] && { echo "negative" ; exit 1 ; }

f0=0
f1=1
counter=2
if [ $1 -eq 0 ] ; then
echo -n "0"
elif [ $1 -ge 1 ] ; then
    echo -n "0 1" 
fi
    while [ $counter -le $1 ] && [ $1 -gt 1 ] ; do
        echo -n "$fn "      
        fn=`expr $f0 + $f1`
        f0=$f1
        f1=$fn
        counter=`expr $counter + 1`
    done 
echo ""

2 个答案:

答案 0 :(得分:3)

if [ $1 -ge 0 2>/dev/null ] ; then

适用于等于或大于0的正数

答案 1 :(得分:-1)

看看这个:

http://www.bashguru.com/2010/12/how-to-validate-integer-input-using.html

显然有人写了多个shell脚本来做到这一点。