У вас уже есть все необходимые строительные блоки, вам просто нужно изменить логику (и исправить небольшую синтаксическую ошибку).
Прежде всего, немного фона. [
является (в основном) псевдонимом для test
. Многое из этого можно найти (кусочками) в справочной странице test (1); Хотя изучение синтаксиса для всего, вероятно, не практично, особенно для начала, я рекомендую ознакомиться с тем, на что способен test
.
Если я правильно понимаю ваш вопрос, вы хотите выполнить команду rar
тогда и только тогда, когда $NOMBREX2
не равен "0".
test
имеет много условных операторов, включая =
("строки равны") и !=
("строки не равны"). Обратите внимание, что целочисленные значения используют разные операторы, включая -eq
и -ne
соответственно. Почему это так, мне не под силу, но это вода под мостом.
В bash есть два способа выполнить команду, если оператор оценивается как true, или более точно, если команда возвращает нулевой статус выхода; либо заключите его в if ...; then .. fi
блок fi , или используйте оператор &&
для разделения команд. Вы можете сделать то же самое, если хотите выполнить команду, когда оператор оценивается как ложный (возвращает ненулевой статус выхода); if ! ...; then ... fi
(то !
означает "не") или используйте ||
между командами.
Поскольку мы уже знаем, что условие, которое вы хотите выполнить при выполнении команды rar
является сравнением неравенства, мы можем записать это двумя различными способами (при условии, что вам нужно сравнение строк; в противном случае вместо !=
использовать -ne
в условиях):
Вариант 1 (идиоматический, подходит для простых условий и отдельных команд):
test "$NOMBREX2" != "0" && rar a -r ...
Вариант 2 (подходит для более сложных условий или нескольких команд):
if [ "$NOMBREX2" != "0" ]; then
rar a -r ...
# ... anything else goes here ...
fi