Streams padrão e argumentos

Introdução ao Bash Scripting

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

Em scripts Bash, há três "streams" do seu programa:

  • STDIN (entrada padrão). Um fluxo de dados que entra no programa
  • STDOUT (saída padrão). Um fluxo de dados que sai do programa
  • STDERR (erro padrão). Erros do seu program​​​​a

Por padrão, esses streams vêm do terminal e escrevem nele.

Você pode ver 2> /dev/null em chamadas de script; redireciona o STDERR para ser descartado. (1> /dev/null seria o STDOUT)

Introdução ao Bash Scripting

STDIN-STDOUT graficamente

Aqui está uma representação gráfica dos streams padrão, usando o pipeline criado antes:

Diagrama de streams padrão

Introdução ao Bash Scripting

Exemplo de STDIN

Considere um arquivo de texto (sports.txt) com 3 linhas.

football
basketball
swimming

O comando cat sports.txt 1> new_sports.txt é um exemplo de ler dados do arquivo e gravar o STDOUT em um novo arquivo. Veja o que acontece se você rodar cat new_sports.txt

football
basketball
swimming
Introdução ao Bash Scripting

STDIN vs ARGV

Um conceito-chave em Bash é argumentos

Scripts Bash podem receber argumentos para uso interno, adicionando um espaço após a chamada de execução do script.

  • ARGV é o array com todos os argumentos passados ao programa.
  • Cada argumento é acessado com a notação $. O primeiro é $1, o segundo é $2 etc.
  • $@ e $* retornam todos os argumentos em ARGV
  • $# retorna a quantidade de argumentos
Introdução ao Bash Scripting

Exemplo de ARGV

Considere um script de exemplo (args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Introdução ao Bash Scripting

Executando o exemplo de ARGV

Agora executando bash args.sh one two three four five

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Introdução ao Bash Scripting

Vamos praticar!

Introdução ao Bash Scripting

Preparing Video For Download...