Как отформатировать многократное использование оператора && с помощью многострочного скрипта? - PullRequest
0 голосов
/ 14 января 2019

Я использую && для объединения команд ( выполняет команду, только если предыдущая команда вернула ok (0) код ).

Но мне нужно добавить это условие ко многим командам (более 8), и тогда мой код выглядит очень некрасиво (слишком длинно для одной уникальной строки):

command 1 && command 2 && command 3 && command 4 && command 5 && command 6 && command 7 && command 8...

Есть ли способ использовать && с более чем одной строкой?

command 1 
 && command 2
 && command 3
 && command 4
 && command 5
 && command 6
 && command 7
 && command 8
...

ОТВЕТ

По предложению @Kamil Cuk, использование && в конце каждой строки может решить мою проблему. Но будут пропущены только строки, следующие за &&. Я предпочитаю пропустить все остальное. Но я согласен - это предложение решит проблему. Мы можем использовать && в конце каждой строки, чтобы применить условие к многострочному. Спасибо.

Я протестировал предложение от @iBug. Я заметил ту же проблему, остальные инструкции (из списка) все еще обрабатываются. Но еще хуже результат с использованием \ неверен: он выполняет первую команду, затем печатает имя команды 2 ...

echo "A" \
echo "B" \
echo "YES"
--> A echo B echo YES

Наконец, решение, которое я использовал, найдено @Biffen: set -e

-e Выйти немедленно, если простая команда выходит с ненулевым статусом, если только команда, которая терпит неудачу, является частью цикла по или до, часть оператор if, часть && или || список, или если команда возвращает статус инвертируется с помощью! -o errexit

Спасибо всем за быструю помощь.

С уважением, Nicolas

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Bash знает, что && требует наличия другой команды, поэтому поместите ее перед разрывом строки, чтобы избежать обратной косой черты.

command 1 &&
command 2 &&
command 3 ... etc

Вопрос звучит смутно, как будто вы должны вместо этого использовать что-то другое. Если не set -e, то, возможно, make вместо простого старого сценария оболочки?

0 голосов
/ 14 января 2019

Backslash!

command 1 \
 && command 2 \
 && command 3 \
 && command 4 \
 && command 5 \
 && command 6 \
 && command 7 \
 && command 8 \
...
 && command n

Просто остерегайтесь и не ошибочно ставьте обратную косую черту в последней строке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...