如何打印可被 4 整除的数字(while 循环)或 awk

如何打印可被 4 整除的数字(while 循环)或 awk

我在 Linux 中面临一个具有挑战性的问题,我需要打印一个可以被 4 整除的数字。

下面的代码帮助我打印一个偶数,但不能被 4 整除:

echo 5 | awk -F, '$0%2{$0++}1'

输出:

6

我不知道如何解决这个问题,但也许如果我使用 while 循环来添加/递增初始值,直到该值可以除以四,然后将该值插入到一个我可以使用的变量中。

例如:

val=5
5/4=  1.25 not divisible

val=val+1
val=6
6/4=  1.5 not divisible

val=val+1
val=7
7/4=  1.75

val=val+1
val=8
8/4=2 is divisible

一旦该值可被 4 整除,则将本示例中的值 8 回显到输出变量,而不是可被 4 整除的答案。

答案1

awk

echo 5 | awk '{$0=int($0/4+1)*4}1'

解释:

  • $0/4+1该值除以4,结果增加1
  • int(n)然后由 awks 向下舍入int()
  • n*4现在我们只需要把它乘以 就4可以得到下一个能被 整除的更大的数字4
  • {...}1最后1的 只会打印该值。

这将打印1612


如果您希望该值在可被 整除时保持不变4,请改用awk

awk '{$0=int($0/4+.75)*4}1'

答案2

#!/bin/bash
i=5
while [ 1 ]
do
        if [ `echo $i%4 | bc` -eq 0 ]; then
                echo $i
                exit
        else
                i=`echo $i+1|bc`
        fi
done

尝试这个脚本while 循环

相关内容