Os shells permitem concatenar e agrupar comandos para uma execução condicional. Cada comando retorna um código de saída que determina o sucesso ou a falha de sua operação. Se o código for 0 (zero), significa que o comando obteve sucesso. Todos os outros códigos significam erro específico do comando.
A lista a seguir mostra como os comandos podem ser agrupados:
Comando1 ; Comando2
executa os comandos em seqüência. O código de saída não é verificado. A linha a seguir exibe o conteúdo do arquivo com cat e depois imprime suas propriedades com ls, independentemente dos códigos de erro:
cat filelist.txt ; ls -l filelist.txt
Comando1 && Comando2
executa o comando à direita quando o comando à esquerda for bem-sucedido (E lógico). A linha a seguir exibe o conteúdo do arquivo e imprime suas propriedades apenas quando o comando anterior obtiver sucesso (compare com a entrada anterior nesta lista):
cat filelist.txt && ls -l filelist.txt
Comando1 || Comando2
executa o comando à direita quando o comando da esquerda falhar (OU lógico). A linha a seguir cria um diretório em /home/wilber/bar apenas quando a criação do diretório em /home/tux/foo falhar:
mkdir /home/tux/foo || mkdir /home/wilber/bar
nome_da_função(){ ... }
cria uma função shell. Você pode usar os parâmetros de posição para acessar seus argumentos. A linha a seguir define a função hello para imprimir uma mensagem curta:
hello() { echo "Hello $1"; }Você pode chamar essa função assim:
hello Tux
que imprimirá:
Hello Tux