如何使用模数运算符退出 BASH while 循环?

如何使用模数运算符退出 BASH while 循环?

因此,实际上,对于我的任务,当用户输入一个模数余数为 0 的数字时,我需要跳出真正的 while 循环,例如: (25 % 5 = 0打破循环)我下面的尝试中哪里出了问题?

while true
do
    echo "Please input anything here: "
    read INPUT

    if [ `expr $INPUT % 5` -eq 0 ]; then
        echo "you entered wrong"
    else
        echo "you entered right"
        break
fi
done

答案1

将部件break从移动elseif部件:

#!/bin/bash

while true
do
    echo "Please input anything here: "
    read INPUT

    if [ `expr $INPUT % 5` -eq 0 ]; then
        echo "you entered wrong"
        break
    else
        echo "you entered right"
    fi
done

答案2

根据@steeldriver 的提示,它对我来说很有效,

  • 确保使用bash

    #!/bin/bash
    
  • 使用 bash 语法进行算术评估

    ((...))
    

否则,shellscript 可以保持不变,

#!/bin/bash

while true
do
    echo "Please input anything here: "
    read INPUT

    if (( INPUT % 5 == 0 )) ; then
        echo "you entered right"
        break
    else
        echo "you entered wrong"
    fi
done

编辑:您已修改了问题。此答案对应于问题的先前版本。(我不清楚您是否想在没有余数时或有余数时中断循环。)

答案3

因为这是bash我们正在讨论的脚本,所以你可能需要使用read -p算术评估((...))

$ while read -p "Enter number:" input ; do (( input%5 == 0 )) && { echo "Wrong"; break;} || echo "alright"; done
Enter number:11
alright
Enter number:7
alright
Enter number:10
Wrong

便携地,你可能想使用[akatest

$ [ $((25%5)) -eq 0 ]  && echo "Zero"
Zero
$ [ $((26%5)) -eq 0 ]  && echo "Zero"
$

相关内容