2017-10-28 10 views
1
function Lab() 
{ 
local result=0 
echo 

echo 'Please enter your overall percentage for your labs (40% possibility)' 
read result 

if [ $result != 40 ] || [ $result -lt 0 ] 
then 
    echo "You have entered a invalid value, please try again." 
    Lab #I thought this would call the function again, resetting itself 
else 
    return $result 
fi 
} 

私は基本的にこの関数が0-40の値しか取れないようにします。これ以外の値を指定すると、真の値が指定されるまで関数自体が再起動されます。私はかなりbashに新しく、私は過去の日のためにこれを把握しようとしています。誰かが正しい方向に私を振ることができる提案があればそれは素晴らしいだろう!特定の条件で自分自身を呼び出す関数

+1

ここにはPHPはありません。しかし、それが '[$ result> 40] || [!result <0] ''!= 40'もほぼすべての有効な値です(0-39)。 – chris85

答えて

3

再帰の必要はありません。 whileループを使用してください。また、関数の値はデータを返すために使用されず、終了ステータスを返します。グローバル変数を設定するか、結果を標準出力に書き出します。

lab() { 
    echo 
    echo 'Please enter your overall percentage for your labs (40% possibility)' 
    IFS= read -r result 

    while [ "$result" -gt 40 ] || [ "$result" -lt 0 ]; do 
    echo "You have entered a invalid value, please try again." 
    IFS= read -r result 
    done 

    echo "$result" 
} 
+1

この変数を私のメインプログラムに保存したい場合は、 "lab"を入力して関数を呼び出し、 "LAB = $(lab)"という関数から変数を保存してください – DavidY

+0

; '$(...)'は*コマンド置換*です。コマンドの出力はキャプチャされ、パラメータ拡張が使用されるのと同じ方法で使用されます。 – chepner

関連する問題