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