&&
Es un operador lógico. ;
Es una secuencia simple.
En cmd1 && cmd2
, cmd2 solo se ejecutará si cmd1 sale con un código de retorno exitoso.
Mientras que en cmd1; cmd2
cmd2 se ejecutará independientemente del estado de salida de cmd1 (suponiendo que no haya configurado su shell para salir en caso de falla en su script o algo así).
En una nota relacionada, con el cmd1 || cmd2
uso del ||
operador lógico 'OR', cmd2 solo se ejecutará si cmd1 falla (devuelve un código de salida distinto de cero).
Estos operadores lógicos a veces se usan en scripts en lugar de una instrucción if básica. Por ejemplo,
if [[ -f "$foo" ]]; then mv "$foo" "${foo%.txt}.mkd"; fi
... se puede lograr de manera más concisa con:
[[ -f "$foo" ]] && mv "$foo" "${foo%.txt}.mkd"
& (simple sequencing), && (conditional AND) and || (conditional OR)
.