2014-03-28 54 views
2

我幾乎完成了爲作業編寫腳本,但在如何完成這個最後部分時遇到了一些麻煩。Bash;條件語句呼應數字

我的問題是在一個while循環內;它打印出基於IF語句的數字,輸入的數字將始終爲偶數。

IFs沒有通過else/elif連接,因爲如果該數字適用於多於一個的語句,則該數字應該能夠打印出來。

我想打印每個循環開始$,如果它不符合任何IF條件,但如果它不,我不想打印它。任何人都可以看到如何做到這一點?

while [[ $starting -lt $ending ]]; do 
    if [ $((starting %7)) -eq 0 ] 
    then 
    echo "$starting red" 
    fi 
    if [ $((starting % 11)) -eq 0 ] 
    then 
    echo "$starting green" 
    fi 
    if [ $((starting % 13)) -eq 0 ] 
    then 
    echo "$starting blue" 
    fi 
    starting=$((starting + 2)) 
done 

回答

2

如果在最後檢查是否沒有前面的if語句是真的,則添加另一個。 if !(starting%7==0 or starting%11==0 or starting%13==0) => echo starting

+0

謝謝!如果[$((starting%7))-ne 0] && [$((starting%11))-ne 0] && [$((starting%13))-ne 0] –

3

跟蹤你是否已經做了你想在一個變量做什麼:

while [[ $starting -lt $ending ]]; do 

handled=0 

if [ $((starting %7)) -eq 0 ] 
then 
echo "$starting red" 
handled=1 
fi 
if [ $((starting % 11)) -eq 0 ] 
then 
echo "$starting green" 
handled=1 
fi 
if [ $((starting % 13)) -eq 0 ] 
then 
echo "$starting blue" 
handled=1 
fi 

if ! ((handled)) 
then 
    echo "$starting didn't match anything" 
fi 

starting=$((starting + 2)) 
done