запишите числа и остаток в файле, если остаток равен 0, тогда отобразите его на экране [bash script] - PullRequest
0 голосов
/ 15 октября 2019

У меня есть сценарий, когда вы вводите два числа (от 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

Проблема в том, что я не знаю, как это сделать без условия if, когда остаток равен 0 идолжен отображаться на экране терминала

1 Ответ

0 голосов
/ 15 октября 2019

Так получилось, что "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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...