我的 bash 脚本没有打印任何东西。更具体地说,它没有进入 if 循环

My bash script isn't printing anything. More specifically it is not entering the if loop

提问人:mikqzz 提问时间:10/27/2023 更新时间:10/27/2023 访问量:37

问:

我试图只打印奇数 14 到 49。但是,我似乎无法进入 if 循环并且没有数字或正在打印我的“Inside if”语句。

我包含了 print 语句来查看我的代码中发生了什么。运行代码时,语句“Inside for loop”打印 4 次,这是 for 循环迭代的预期次数。所以我的for循环工作正常。但是,基于既没有打印数字也没有打印“Inside if”的事实。我没有进入我的 if 循环。

#!/bin/bash

for (( count=14; count<=49; count+=5 ))
do
        echo "inside for loop"

        if [ $(($count%2)) -ne 0 ]; then
                echo $count
                echo "inside if"
        fi

        let count=$(($count+5))
done

我能够使用相同的逻辑和 if 语句通过 while 循环来完成此操作,所以我不确定为什么它的行为不符合我的预期:

#!/bin/bash

let count=14

while [ $count -le 49 ];
do
        if [ $(($count%2)) -ne 0 ]; then
                echo $count
        fi
        
        let count=$(($count+5))
done

我的任务要求我使用 for 循环。请帮忙,谢谢!

bash for 循环 if 语句 脚本

评论

0赞 jhnc 10/27/2023
15 介于 14 和 49 之间,是奇数。为什么要递增 5?
0赞 mikqzz 10/27/2023
这就是任务想要的。
0赞 Ed Morton 10/28/2023
不要在数值运算中混用算术运算符和非算术运算符。您在代码的某些部分使用算术运算符,因此也将其用于所有比较,即 和。(( ... ))if (( (count%2) != 0 ))while (( count <= 49 ))

答:

2赞 Loocid 10/27/2023 #1

你正在加倍努力,因为你是在表达式内部和循环的末尾这样做的。因此,您每个循环添加 10 个,这意味着计数永远不会是奇数。count = count + 5for

在第一个脚本中删除,它将按预期工作。let count=$(($count+5))