Я заранее прошу прощения, если это дублирующий вопрос. Я приложил усилия для поиска / проверки, прежде чем спрашивать здесь.
Мне удобно писать однострочники, как это:
foocommand && foocommand2 && foocommand3
Идея в том, что я хочу, чтобы последующие команды выполнялись только в том случае, если предыдущая была «успешной».
Я пишу довольно длинный скрипт, и этот однострочный текст неосуществим, потому что он выглядит как огромный блок запутанного кода для всех остальных.
Я хочу разместить команды и написать комментарии между ними в скрипте. Как я могу сделать это и при этом иметь эквивалент && там?
||
и &&
(в отличие от |
или &
) называется коротким замыканием. Поведение, используемое с последними операторами, называется энергичной оценкой.
a && b && c
будет работать только , b
если a
удастся, так что «это работает только , c
если b
удастся» и «она работает только c
если a
и b
как добиться успеха» эквивалентны утверждения: b
не может быть успешным , если a
не удалось.
a || b && c
более показателен.
true || false && echo hi
будет выводить hi
. Спецификация гласит : операторы "&&" и "||" должен иметь равный приоритет и должен оцениваться с левой ассоциативностью.
&&
не означает , что последующая команда будет работать , если предыдущий один был успешным. Это означает , что команда будет работать , если коллективный результат из всех предыдущих команд в списке команд успеха. Вы можете знать это, но будущие читатели могут неправильно понять.