击;条件语句回显数字

时间:2014-03-28 22:51:50

标签: bash

我差不多为编作编写了一个脚本,但在考虑如何完成最后一部分时遇到了一些麻烦。

我的问题是在一个while循环中;它根据IF语句打印出数字,输入的数字将始终为偶数。

IFs没有通过else / elif连接,因为如果该数字适用于超过1个语句,则该数字应该能够打印出来。

如果它不满足任何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 个答案:

答案 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

答案 1 :(得分:2)

在最后添加另一个if,检查以前的if语句是否都为真。 if !(starting%7==0 or starting%11==0 or starting%13==0) => echo starting