Vi tittar på ett annat exempel. Givet följande två kommandon: Det första (ls) är ett giltigt kommando medan det andra (ls -0) är ett ogiltigt kommando eftersom det innehåller ett olagligt alternativ -0.

Detta är ett giltigt kommando:

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

Nu ska vi titta på det ogiltiga kommandot:

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

Problemet med det andra skriptet är att det visar eventuella felmeddelanden i STDERR. För våra skript vill vi dock undertrycka felmeddelanden. Som tur är finns det ett hack för att göra exakt vad vi vill.

Låt oss prova det igen med > /dev/null 2>&1:

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

Märk den här gången att vi inte ser några felmeddelanden. För att bryta ner det här, så undertrycker vi felutmatningen (stderr) av kommandot ls -0, omdirigerar den till standardutmatningen (stdout), skriver den till /dev/null och kastar den därmed omedelbart. Symbolen >& är en operatör som kopierar utdata från den första filbeskrivaren (2) och omdirigerar till utdata från den andra filbeskrivaren (1).

Nu ska vi se vad siffrorna i 2>&1 representerar genom att titta på det här diagrammet över filbeskrivare.

Vi kan verifiera detta genom att skriva ut till en vanlig fil i stället för till /dev/null.

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

Lämna ett svar

Din e-postadress kommer inte publiceras.