2012-10-30 56 views
4

可能重複:
How do I test if a variable is a number in bash?檢查,如果該參數是shell腳本中一些

我嘗試寫的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 "" 
+0

@桑普森辰沒有工作。在提問之前我檢查過它。它沒有工作 – femchi

回答

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

它爲正數等於或大於0