Browse Source

Shell por dia: Error chain

master 20210922
Julio Biason 3 years ago
parent
commit
db6da62de2
  1. 1
      content/books/shell-por-dia/_index.md
  2. 2
      content/books/shell-por-dia/entradas-e-saidas.md
  3. 46
      content/books/shell-por-dia/error-chain.md
  4. 2
      content/books/shell-por-dia/introducao.md
  5. 2
      content/books/shell-por-dia/pipes.md
  6. 2
      content/books/shell-por-dia/redirecionamento.md
  7. 2
      content/books/shell-por-dia/subcomandos.md

1
content/books/shell-por-dia/_index.md

@ -13,3 +13,4 @@ hide_content = false
* [Pipes](@./pipes.md)
* [Shells](@./shells.md)
* [Subcomandos](@./subcomandos.md)
* [Error chain](@./error-chain.md)

2
content/books/shell-por-dia/entradas-e-saidas.md

@ -3,7 +3,7 @@ title = "Um Shell Por Dia: Entradas e Saídas"
date = 2021-09-13
[taxonomies]
tags = ["por dia", "shell", "entradas", "saídas", "stdin", "stdout", "stderr"]
tags = ["books", "por dia", "shell", "entradas", "saídas", "stdin", "stdout", "stderr"]
+++
Antes de sairmos vendo comandos e coisas do tipo, vamos começar com um conceito

46
content/books/shell-por-dia/error-chain.md

@ -0,0 +1,46 @@
+++
title = "Um Shell por Dia: Error Chain"
date = 2021-09-22
[taxonomies]
tags = ["books", "por dia", "shell", "erros"]
+++
Quando um comando é executado, ele "emite" um código para o shell indicando o
resultado de sua execução. Por exemplo, se você rodar `ls` e estiver no Bash,
você pode ver o resultado do comando com `echo $?` -- que será 0, já que o ls
conseguiu executar (a não ser que você esteja num diretório que não tem
permissão de listar o conteúdo, mas enfim).
{% note() %}
Para quem programa/programou em C, deve lembrar das constantes `EXIT_SUCCESS` e
`EXIT_FAILURE`, que ficavam no final do `main()`. Bom, SUCCESS tem definido o
valor 0 e FAILURE 1, e se você quiser, pode brincar de criar uma aplicação que
retorne os dois valores e verificar o resultado com o `echo $?`.
{% end %}
Algumas aplicações utilizam vários códigos diferentes para indicar que a
execução foi terminada por um erro específico.
Mas para encadeamento de erros, só precisamos saber que 0 é "tudo terminou
certo" e qualquer coisa diferente disso é "deu erro".
Para encadear comandos, podemos usar `&&` e `||`.
`&&` indica "se o comando anterior terminar em sucesso, execute o próximo
comando". Por exemplo `ls && cp arq1 arq2` indica que, se o `ls` terminar com
sucesso, então o comando `cp` (que copia arquivos) será executado; se, por algum
motivo, o `ls` falhasse, o comando `cp` não seria executado.
`||` indica "se o comando anterior falhar, execute o próximo comando". Assim,
`ls || cp arq1 arq2` faria com que o `cp` somente fosse executado se o `ls`
falhasse.
E vários comandos podem ser encadeados dessa forma:
```
ls && cp arq1 dir/arq2 || mkdir dir
```
Irá fazer o `ls`; se ele não falhar, executa o `cp`; se o `cp` falhar, cria o
diretório.

2
content/books/shell-por-dia/introducao.md

@ -3,7 +3,7 @@ title = "Um Shell Por Dia: Introdução"
date = 2021-09-13
[taxonomies]
tags = ["por dia", "shell"]
tags = ["book", "por dia", "shell"]
+++
Assim como eu já tinha feito com "Um Python Por Dia" e "Um Vim Por Dia", eu

2
content/books/shell-por-dia/pipes.md

@ -3,7 +3,7 @@ title = "Um Shell Por Dia: Pipes"
date = 2021-09-14
[taxonomies]
tags = ["por dia", "shell", "entradas", "saídas", "stdin", "stdout"]
tags = ["book", "por dia", "shell", "entradas", "saídas", "stdin", "stdout"]
+++
Ainda sobre entradas e saídas, imagine que você queira usar a saída de um

2
content/books/shell-por-dia/redirecionamento.md

@ -3,7 +3,7 @@ title = "Um Shell Por Dia: Redirecionamento"
date = 2021-09-14
[taxonomies]
tags = ["por dia", "shell", "redirecionamento", "stdin", "stdout", "stderr"]
tags = ["book", "por dia", "shell", "redirecionamento", "stdin", "stdout", "stderr"]
+++
Agora que conhecemos os descritores de entrada, saída e erro, vamos ver como

2
content/books/shell-por-dia/subcomandos.md

@ -3,7 +3,7 @@ title = "Um Shell por Dia: Sub comandos"
date = 2021-09-21
[taxonomies]
tags = ["books", "shell por dia", "subcomandos"]
tags = ["books", "por dia", "shell", "subcomandos"]
+++
Algumas vezes queremos que parte do comando que será executado seja calculado

Loading…
Cancel
Save