quinta-feira, 7 de fevereiro de 2013

Estruturas de Controle da Shell


Só para esclarecer, a Dica do dia surgiu devido o pouco tempo que estou tendo para escrever um post, com isso consigo alimentar o blog com dicas interessantes e úteis.

Shell Script nada mais é do que utilizar diversos comandos do sistema utilizando estruturas de controle e comandos fornecidos pela shell a fim de automatizar tarefas cotidianas. Conhecer bem as estruturas de controle da shell é muito importante. Na Dica do dia será feito um breve resumo do funcionamento de algumas dessas estruturas, entretanto, sugere-se fortemente a leitura do manual da bash (man bash).

Para que possamos utilizar bem as ferramentas fornecidas pela nossa shell preferida, precisamos saber como funciona um comando no GNU/Linux. Sendo assim, a figura abaixo mostra a “anatomia” de um comando:


Todo comando em um sistema Unix-like tem uma entrada padrão (StdIn), uma saída padrão (StdOut) e uma saída de erro (StdErr), além de um valor de retorno. A entrada padrão de um comando pode ser, por exemplo, um arquivo que ele irá processar, como no comando:

# grep bash /etc/passwd

No qual o arquivo /etc/passwd é o arquivo de StdIn. Já a saída padrão desse comando é a tela, pois é nela que o resultado será apresentado. Caso ocorra algum erro durante a execução desse programa uma mensagem será enviada a saída de erro que, por padrão, joga a informação também para a tela.

Uma forma de descobrir se o último comando executado terminou com sucesso ou falhou ao ser executado é verificando o valor que ele retornou e que fica armazenado na variável $?. Se o valor retornado foi 0, então o comando foi executado com sucesso, caso contrário, houve algum erro durante a execução e o número retornado pode ser utilizado para determinar qual erro ocorreu.

Conhecendo como um comando funciona, podemos utilizar operadores a fim de alterar as entradas e saídas dos comandos. Os operadores mais utilizados são:

• ; separa um comando do outro;
• | transforma o StdOut de um comando em StdIn para outro;
• > redireciona a StdOut para um arquivo, criando-o ou sobrescrevendo seu conteúdo caso ele exista;
• >> redireciona a StdOut para um arquivo adicionando o conteúdo ao final dele;
• < joga o conteúdo de um arquivo para o StdIn;
• 2>&1 transforma a StdErr em StdOut;
• 2> redireciona a StdErr para um arquivo;
• || operador “ou”, testa o valor da variável $?;
• && operador “e”, testa o valor da variável $?.

Fonte: Internet (ctrl+c / ctrl+v)

Nenhum comentário:

Postar um comentário