我在 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
的 只会打印该值。
这将打印16
值12
。
如果您希望该值在可被 整除时保持不变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 循环