我正在尝试创建一个打印奇数来自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没有反应〜
答案 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