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