У вас уже є всі необхідні вам будівельні блоки, вам просто потрібно змінити логіку (і виправити невелику синтаксичну помилку).
Спочатку трохи тла. [є (в основному) псевдонімом test. Багато з цього можна знайти (у шматочках та шматочках) на тестовій (1) сторінці людини; незважаючи на те, що вивчити синтаксис для всього, мабуть, не практично, особливо для початку, я рекомендую ознайомитись із тим, що testможе робити.
Якщо я правильно розумію ваше запитання, ви хочете виконати rarкоманду, якщо і лише тоді, якщо $NOMBREX2 вона не дорівнює "0".
testмає багато умовних операторів, у тому числі =("рядки рівні") та !=("рядки не рівні"). Зауважте, що цілі значення використовують різні оператори, включаючи -eqі, -neвідповідно. Чому це зроблено таким чином, поза мною, але це вже вода під мостом.
У bash є два способи запускати команду, якщо оператор оцінюється як true, або точніше, якщо команда повертає нульовий статус виходу; або вкладіть його в if ...; then .. fiблок, або використовуйте &&оператор для розділення команд. Ви можете зробити те ж саме, якщо хочете виконати команду, коли оператор оцінюється як false (повертає ненульовий статус виходу); 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
$COMMENT1. Якби в сценарії був коментар, Баш навіть не прочитав би його. Якщо ви змінили рядок#на початок, це не коментар, а все ж рядок, щойно починається з#.