Lad os se på et andet eksempel. Givet følgende to kommandoer: Den første (ls) er en gyldig kommando, mens den anden (ls -0) er en ugyldig kommando, fordi den indeholder en ulovlig indstilling -0.

Dette er en gyldig kommando:

$ ls
Applications Documents Library Music Public$ echo $?
0

Nu skal vi se på den ugyldige kommando:

$ ls -0
ls: illegal option -- 0
usage: ls $ echo $?
1

Problemet med det andet script er, at det viser eventuelle fejlmeddelelser i STDERR. Men for vores scripts ønsker vi at undertrykke fejlmeddelelser. Heldigvis findes der et hack til at gøre præcis det, vi ønsker.

Lad os prøve det igen med > /dev/null 2>&1:

$ ls -0 > /dev/null 2>&1
$ echo $?
1

Bemærk denne gang, at vi ikke fik vist nogen fejlmeddelelser. For at bryde dette ned, undertrykker vi fejloutputtet (stderr) fra ls -0-kommandoen, omdirigerer det til standardudgangen (stdout), skriver det til /dev/null og kasserer det derved straks. Symbolet >& er en operatør, der kopierer output fra den første fildeskriptor (2) og omdirigerer til output fra den anden fildeskriptor (1).

Nu skal vi se, hvad tallene i 2>&1 repræsenterer ved at se på dette skema over fildeskriptorer.

Vi kan verificere dette ved at udstede til en almindelig fil i stedet for /dev/null.

$ ls -0 > /tmp/devnull 2>&1
$ echo $?
1$ cat /tmp/devnull
ls: illegal option -- 0
usage: ls

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.