Standardströmmar & argument

Introduktion till Bash-skriptning

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

I Bash-skriptning finns det tre "strömmar" för ditt program:

  • STDIN (standard input). En dataström in i programmet
  • STDOUT (standard output). En dataström ut från programmet
  • STDERR (standard error). Fel i ditt program

Som standard kommer dessa strömmar från och skriver till terminalen.

Du kan stöta på 2> /dev/null i skriptanrop, vilket omdirigerar STDERR så att det tas bort. (1> /dev/null gäller STDOUT)

Introduktion till Bash-skriptning

STDIN-STDOUT grafiskt

Här är en grafisk illustration av standardströmmarna, med den pipeline som skapades tidigare:

Diagram över standardströmmar

Introduktion till Bash-skriptning

STDIN-exempel

Ta en textfil (sports.txt) med 3 rader data.

football
basketball
swimming

Kommandot cat sports.txt 1> new_sports.txt tar data från filen och skriver STDOUT till en ny fil. Se vad som händer när du kör cat new_sports.txt

football
basketball
swimming
Introduktion till Bash-skriptning

STDIN vs ARGV

Ett centralt begrepp i Bash-skriptning är argument

Bash-skript kan ta emot argument som används inuti skriptet – lägg till ett mellanslag efter anropet följt av argumentet.

  • ARGV är arrayen med alla argument som ges till programmet.
  • Varje argument nås med $-notation. Det första som $1, det andra som $2 osv.
  • $@ och $* ger alla argument i ARGV
  • $# ger antalet argument
Introduktion till Bash-skriptning

ARGV-exempel

Ta ett exempelskript (args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Introduktion till Bash-skriptning

Kör ARGV-exemplet

Kör nu 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"
Introduktion till Bash-skriptning

Nu kör vi en övning!

Introduktion till Bash-skriptning

Preparing Video For Download...