我有一个场景,当你输入两个数字(从1到9)并计算它们的剩余部分(a%b)。然后,这些数字将保存到一个文件中并剩余。如果余数为0,则这些数字和余数需要显示在终端屏幕上。
注意:需要在没有if条件的情况下完成。
我所做的:

echo Enter number:
read a
echo Enter another number:
read b
z=`expr $a % $b`
echo $a $b $z > file.txt
t=`expr $a % $b=0` echo $a $b $t

问题是,当余数为0且需要在终端屏幕上显示时,我不知道如何在没有if条件的情况下执行此操作

最佳答案

当EXPR为0时,EXPR有一个非零的退出代码。我们可以使用那个退出代码来有条件地运行那个SATE:

#!/bin/bash
echo Enter number:
read a
echo Enter another number:
read b
z=$(expr $a % $b)
echo $a $b $z > file.txt
expr $a % $b >/dev/null || echo $a $b $z

输出:
Enter number:
54
Enter another number:
2
54 2 0

另一个输出:
Enter number:
55
Enter another number:
2

基本上是这样的,因为EXPR在结果为0时给出退出代码1。当前面有一个非零退出代码时,我们只使用下一个命令。>/dev/null隐藏“expr”输出,我不想显示输出,只使用错误代码。
另一种方法,但这看起来更像一个if语句:
[ $(expr $a % $b) -eq 0 ] && echo $a $b $z

基本上,它使用“[”程序(位于/usr/bin/[)来测试expr的输出是否为0。如果是这样,它给出退出代码0,我们运行回音。
我们也可以使用“测试”程序,这与使用[程序:
test $(expr $a % $b) -eq 0 && echo $a $b $z

关于linux - 在文件中写入数字和余数,如果余数为0,则将其显示在屏幕上[bash脚本],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58396614/

10-09 17:51