Так получилось, что "expr" имеет ненулевой код выхода, когда остаток равен 0. Мы можем использовать этот код выхода для условного выполнения этого запроса:
#!/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 дает код выхода 1, когда результат равен 0. Использование «||»мы запускаем следующую команду только тогда, когда предыдущая имела ненулевой код выхода. > / Dev / null скрывает вывод «expr», я не хотел показывать вывод, используйте только код ошибки.
Другой способ сделать это, но это начинает выглядеть больше как выражение if:
[ $(expr $a % $b) -eq 0 ] && echo $a $b $z
По сути, она использует программу "[" (она находится в / usr / bin / [), чтобы проверить, равен ли вывод expr 0. Если это так, он дает код выхода 0и мы запускаем эхо.
Мы также можем использовать «тестовую» программу, которая аналогична использованию [program:
test $(expr $a % $b) -eq 0 && echo $a $b $z