Я не программист, и я пытаюсь сделать свой первый сценарий.

Я имею:

# NOMBREX1:lalalala
# NOMBREX2:0

if [ "$NOMBREX2" == "0" ]; 
    then ??????
fi
$COMMENT1 rar a -r .........

Если NOMBREX2=0 я хочу переименовать $COMMENT1 в # для комментирования этой строки.

Как я могу это сделать?

1 ответ1

4

У вас уже есть все необходимые строительные блоки, вам просто нужно изменить логику (и исправить небольшую синтаксическую ошибку).

Прежде всего, немного фона. [ является (в основном) псевдонимом для 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .