Standaardstreams & argumenten

Introductie tot Bash-scripting

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

In Bash-scripting zijn er drie ‘streams’ voor je programma:

  • STDIN (standard input). Datastroom het programma in
  • STDOUT (standard output). Datastroom uit het programma
  • STDERR (standard error). Fouten van je programma

Standaard komen deze streams van en schrijven ze naar de terminal.

Je ziet soms 2> /dev/null in scriptcalls; dat stuurt STDERR naar de prullenbak. (1> /dev/null is STDOUT)

Introductie tot Bash-scripting

STDIN-STDOUT grafisch

Hier is een grafische weergave van de standaardstreams, met de eerder gemaakte pipeline:

Diagram standaardstreams

Introductie tot Bash-scripting

STDIN-voorbeeld

Neem een tekstbestand (sports.txt) met 3 regels.

football
basketball
swimming

Het commando cat sports.txt 1> new_sports.txt leest uit het bestand en schrijft STDOUT naar een nieuw bestand. Kijk wat er gebeurt met cat new_sports.txt

football
basketball
swimming
Introductie tot Bash-scripting

STDIN vs ARGV

Een kernconcept in Bash-scripting is arguments

Bash-scripts kunnen arguments meekrijgen door na de scriptcall een spatie en waarden te zetten.

  • ARGV is de array met alle argumenten voor het programma.
  • Elk argument is toegankelijk via $. De eerste is $1, de tweede $2, enz.
  • $@ en $* geven alle argumenten in ARGV
  • $# geeft het aantal argumenten
Introductie tot Bash-scripting

ARGV-voorbeeld

Bekijk een voorbeeldscript (args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Introductie tot Bash-scripting

Het ARGV-voorbeeld uitvoeren

Nu voer je bash args.sh one two three four five uit

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Introductie tot Bash-scripting

Laten we oefenen!

Introductie tot Bash-scripting

Preparing Video For Download...