4

重複の可能性:
変数がbashの数値であるかどうかをテストするにはどうすればよいですか?

シェルスクリプトでフィボナッチ数列を書いてみます。たとえば、ユーザーが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 ""
4

2 に答える 2

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

0以上の正の数に対して機能します

于 2012-10-30T21:01:06.730 に答える
-2

これを見てください:

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

どうやら誰かがそれを正確に行うために複数のシェルスクリプトを書いたようです。

于 2012-10-30T20:42:21.703 に答える