Прошу вибачення заздалегідь, якщо це питання, що повторюється. Я доклав зусиль для пошуку / перевірки, перш ніж запитати тут.
Мені подобається писати однолінійки так:
foocommand && foocommand2 && foocommand3
Ідея полягала в тому, що я хочу запускати наступні команди лише у тому випадку, якщо попередня була "успішною".
Я пишу дещо тривалий сценарій, і цей одноклапник не здійснен, бо він схожий на величезний блок заплутаного коду для всіх інших.
Я хочу виділити команди та написати коментарі між ними в сценарії. Як я можу це зробити, і все ще є еквівалент && там?
||і &&(на відміну від |або &) називається коротким замиканням. Поведінка, що використовується з останніми операторами, називається прагненням до оцінки.
a && b && cзапускається лише в тому bвипадку, коли це aвдасться, тому "він працює лише у cвипадку bуспіху" і "він працює лише у тому cвипадку, якщо aі те й bінше досягає успіху" є рівнозначними твердженнями: bне можна досягти успіху, якщо не aвдалося.
a || b && cє більш показовим.
true || false && echo hiвийде hi. Технічна специфікація гласить: Оператори "&&" та "||" має рівний пріоритет і оцінюється лівою асоціативністю.
&&не означає , що подальша команда буде працювати , якщо попередній один був успішним. Це означає , що команда буде працювати , якщо колективний результат з усіх попередніх команд в списку команд успіху. Ви можете це знати, але майбутні читачі можуть неправильно зрозуміти.