&& - це логічно AND:
&& - це спосіб вираження логічного AND , тобто весь вираз є Істинним, лише якщо обидві його сторони є істинними. За логікою кажуть, що все твердження (P&Q) є істинним лише тоді, коли і P, і Q є істинними.
Як наслідок цього, комп'ютери зазвичай розглядають P&Q як оцінку короткого замикання . Отже, оскільки весь вислів буде істинним лише в тому випадку, якщо І P, і Q є істинними, і якщо P неправдиво, твердження Q не оцінюється . В основному комп'ютери ледачі (ефективні) і не переймаються оцінкою Q, якщо їх теж немає. Це також стосується логічного АБО, дивіться попереднє посилання.
Три контексти && в Bash:
1) Використання Оцінки короткого замикання зі статусом виходу команди:
Кожна команда має статус виходу. Якщо команда має помилку, вона має статус виходу, який не дорівнює нулю. Отже, якщо статус виходу не дорівнює нулю, а && використовується для з'єднання команд разом у оператор, пізніші команди не будуть оцінені (виконані), якщо попередня не мала статусу виходу 0 (True). Це відбувається через оцінку короткого замикання. Тож якщо у вас є:
P && Q
Q не буде виконуватися, якщо P не був істинним (якщо P виходить зі статусом нічого, крім 0, це неправда). Так само, як:
./configure && make
make не буде виконуватися, якщо в налаштуваннях була помилка, не було правдою. Таким чином, в кінцевому підсумку це спосіб запису, якщо тоді висловлювання:
if ./configure ; then
make
fi
Майте на увазі, тоді в більшості контекстів 0 є помилковим, але це не стосується статусу виходу.
2) && Може бути використаний у вбудованій [[]] тестовій команді Bash:
&& Може також використовуватися всередині вбудованої тестової команди в bash [[]] для комбінування виразів аналогічно, як комбінування команд. Вся тестова операція буде істинною, лише якщо обидва операнди (сторони) && є істинними, наприклад:
if [[ ( $a -gt 2 ) && ( $a -lt 5 ) ]]; then ...
було б способом сказати, якщо $ a - ціле число між 2 і 5 (не враховуючи 2 і 5).
3) Арифметична оцінка:
Нарешті, && може використовуватися в арифметичній оцінці як логічне AND. Якщо обидва (логічне І) чисел у наведеному нижче значенні не дорівнює нулю, він повертає 0, а інше повертається 1:
kbrandt@desktop:~/$ echo $((1 & 1))
1
kbrandt@desktop:~/$ echo $((0 && 1))
0