2013-10-24 84 views
0

這是我很確定,離開。但是在這裏。Bash shell腳本輸入2個整數。第二個必須大於第一個

echo "Enter a number:" 
read number 

if ["$number" = 0] 
    echo "Enter the second, larger, number:" 
read second_number 

if ["$second_number" < "$number"] 
    then 
    echo "Second number must be larger than the first number" 
else 

if ["$second_number" > "$number"] 
    then 
    echo "Good Job!" 
fi 

我意識到這可能是充滿了錯誤。這就是說你可以假設我不知道我在做什麼,你會是對的。

對於第三行= 0部分是錯誤的,我不知道如何提出一個數字輸入

+0

歡迎來到SO。請考慮解釋你面臨的問題。如果我們不明白你的問題是什麼,那麼代碼是不夠的。也可以使用** {} **按鈕來正確格式化您的代碼。 – dic19

+0

我會測試是否有這樣的模式的整數:'[[$ i!= * [^ [:digit:]] *]]'。 – kojiro

回答

1

這是一個很好的指南,編程的bash shell Advanced Bash Scripting Guide和測試看看菜單項Reference Cards

具體回答你的問題,如果語句的正確形式用於測試的數值參數是

if [ $number -eq 0 ] 
then 
    # do something 
fi 
+0

+1,但如果'$ number'中有一個空格,這可能會中斷。 – kojiro

+0

如果$ number的內容在其中有一個空格,那麼它不是一個整數並且將被視爲一個字符串,因此測試將失敗,因爲-eq/-lt/-gt等是特定的整數測試。 – Cwissy

+0

是的,從這個意義上說,行爲是正確的,儘管'-bash:[:too many arguments'錯誤消息可能不是期望的行爲並且容易被引號阻止。 – kojiro

1

我想這是你想要什麼:

#!/bin/bash 

echo "Enter a number:" 
read number 

if [ "$number" -eq 0 ] 
then 
     echo "Enter the second, larger, number:" 
     read second_number 

     if [ "$second_number" -gt "$number" ] 
     then 
       echo "Good Job!" 
     else 
       echo "Second number must be larger than the first number" 
     fi 
fi 
相關問題