在bash脚本中使用for和if循环

时间:2014-11-28 12:12:52

标签: php linux bash if-statement for-loop

我正在尝试创建一个打印奇数来自1-99的bash脚本 我的逻辑工作在PHP,但我无法弄清楚bash中的代码是什么

php代码:

for ($i=1; $i<=99; $i++)
{
if ( $i % 2 != 0 )
{
echo "$i <br>";
}
}

我如何将其转换为bash

我尝试了以下但是工作

for ((i=1; i<=99; i++))
do
if [ $i % 2 != 0 ]
then
echo "$i";
fi
done

结果就像 〜对stdout没有反应〜

3 个答案:

答案 0 :(得分:2)

这里的问题是你的if声明。如果您使用的是bash,那么您也可以使用(( ))语法:

if (( i % 2 != 0 )); then echo "$i"; fi

您经常会发现人们也使用&&来写这个:

(( i % 2 != 0 )) && echo "$i"

此版本最忠实于原始版本,因为您每次迭代都会将计数器i递增一次,但您当然可以将代码简化为2:

for ((i=1; i<=99; i+=2))

你甚至可以完全跳过循环:

printf "%s\n" {1..99..2}

答案 1 :(得分:1)

无需使用条件:

for i in {1..99..2} ; do
    echo $i
done

要将条件与模运算符一起使用,请使用算术条件:

 if (( i % 2 != 0 )) ; then 

答案 2 :(得分:0)

试试这个:

#!/bin/bash

for i in {1..99}
do
    j=$(echo "$i % 2" | bc)
    if [[ $j -ne 0 ]]
    then
        echo $i
    fi
done
相关问题