Skalet sh

Översikt 6: Koppla ihop flera kommandon

I skalet sh finns det huvudsakligen fem sätt att koppla ihop kommandon med varandra:
Semikolon eller ny rad
"vänta på att föregående kommando ska avslutas".
Och-tecken ("&")
"fortsätt omedelbart, utan att vänta på att föregående kommando ska bli klart". Kommandona kommer att utföras parallellt.
Tvärstreck ("|")
"koppla föregående kommandos utmatning till följande kommandos inmatning". Detta sätt att koppla kommandon kallas för ett rör (eng. "pipe"), och tvärstreckstecknet brukar i det här sammanhanget kallas för "pipe bar" på engelska. "Rör", "rörledning" och "pipa" är vanliga svenska termer.
Om-falskt-så ("||")
"utför följande kommando om föregående kommando misslyckas". Kallas "or" på engelska, och fungerar ungefär som ||-operatorn i programspråket C.
Om-sant-så ("&&")
"utför följande kommando om föregående kommando lyckas". Kallas "and" på engelska, och är precis som || lånad från programspråket C.
Den inbördes prioriteten mellan kommandona är att semikolon, &-tecken och ny rad tillsammans har lägst prioritet, därefter ||, sedan &&, och högst prioritet har "pipe bar" ("|"). Man kan använda vanliga parenteser för att få annan prioritet, men parenteserna har samtidigt en annan funktion, nämligen att starta ett nytt skal som kommandona inom parentes utförs i. Detta innebär att vissa inbyggda kommandon inte alltid gör det man vill; till exempel görs alla förändringar av variabelvärden bara i det nya skalet, och när man kommer till slutparentesen försvinner det skalet igen, och inga variabler har ändrats i ursprungsskalet.

Hur det fungerar

&-tecknets enda funktion är att tala om för skalet att det inte ska vänta på att föregående kommando ska avslutas, utan direkt ta hand om nästa kommando.

Ett |-tecken talar om för skalet att stänga föregående kommandos standard output och efterföljande kommandos standard input, och ersätta dem med en "pipe" som kopplar ihop kommandona.