A notação &&
é um operador booleano para AND, o que significa que ele usa o resultado do comando anterior e somente executa o próximo comando se o código de saída do primeiro comando for 0.
Então, isso é uma forma abreviada de:
ls a &> /dev/null && echo "Done"
isso, que basicamente faz a mesma coisa.
ls a &> /dev/null
if [ $? = 0 ]; then
echo "Done"
fi
o {
é para agrupar comandos a serem executados, portanto:
ls a &> /dev/null && {
echo "This will happen if"
echo "ls command returns 0"
}
é uma abreviação para isso:
ls a &> /dev/null
if [ $? = 0 ]; then
echo "This will happen if"
echo "ls command returns 0"
fi
Você também pode fazer o mesmo com o operador OR ||
, para obter também a parte else do if. Assim
ls a &> /dev/null && echo "Done" || echo "No can do!"
E também combine-o com o agrupamento de comandos:
ls a &> /dev/null && {
echo "This will happen if"
echo "ls command returns 0"
} || {
echo "This will happen if"
echo "ls command returns other than 0"
}