&&
є логічним оператором. ;
є простим послідовністю.
В cmd1 && cmd2
, cmd2 буде запущено, лише якщо cmd1 вийде з успішним кодом повернення.
В той час як cmd1; cmd2
cmd2 запускається незалежно від статусу виходу cmd1 (якщо припустити, що ви не встановили оболонку для виходу з усіх помилок у вашому сценарії чи щось подібне).
У відповідній примітці, cmd1 || cmd2
використовуючи ||
логічний оператор 'АБО', cmd2 буде запускатися лише у випадку відмови cmd1 (повертає ненульовий код виходу).
Ці логічні оператори іноді використовуються в скриптах замість базового оператора if. Наприклад,
if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi
... можна досягти більш стислого за допомогою:
[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"
& (simple sequencing), && (conditional AND) and || (conditional OR)
.