Яка різниця між амперсандом і крапкою з комою в Linux Bash ?
Наприклад,
$ command1 && command2
проти
$ command1; command2
Яка різниця між амперсандом і крапкою з комою в Linux Bash ?
Наприклад,
$ command1 && command2
проти
$ command1; command2
Відповіді:
&&Оператор є логічним оператором І: якщо ліва сторона повертає нульове стан виходу, оператор повертає цей статус і не оцінює праву сторони (його коротке замикання), в іншому випадку він права сторони і повертає статус виходу . Зазвичай це використовується для того, щоб переконатися, що command2його запускають лише в тому випадку, коли command1він працює успішно.
;Маркер просто відокремлює команди, так що він буде працювати другу команду , незалежно від того , чи вдасться першим.
&&відрізняється від одиничної амперсанди &в баші?
&викликає запуск команди у фоновому режимі, так що так. "Запустити це у фоновому режимі" сильно відрізняється від "запустити наступну команду, лише якщо ця інша успішна."
command1 && command2виконується, command2якщо (і лише якщо) command1виконання закінчується успішно. У жаргоні Unix це означає вихідний код / код повернення, рівний нулю.
command1; command2виконується command2після виконання command1, послідовно. Не має значення, успішні були команди чи ні.
Перша - це проста логіка AND використовує оцінку короткого замикання, остання просто розмежовує дві команди.
У дійсності відбувається те, що коли перша програма повертає ненульовий код виходу, ціле ANDоцінюється, FALSEа друга команда не буде виконана. Пізніші просто виконують їх обидва в порядку.