Flera kommandon, vad är skillnaden?

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Flera kommandon, vad är skillnaden?

Inlägg av Osprey »

Det jag undrar är alltså om det är någon skillnad på följande tre varianter. Främst tänker jag på om det i praktiken innebär någon skillnad när det gäller kodaktivering (programstart) eller något sådant...

Alternativ #1

Kod: Markera allt

ls
pwd
Alternativ #2

Kod: Markera allt

ls&&pwd
Alternativ #3

Kod: Markera allt

ls;pwd
Kommandona "ls" och "pwd" är bara som exempel i det här fallet och kan så sett ersättas av andra kommandon. Resultatet blir exakt samma av alla varianterna, vilket borde innebära att det körs på exakt samma sätt, förutom en liten skillnad precis i början när skalet behandlar inmatatde kommandon. Finns det någon mer skillnad på det, förutom kompatibilitetsgrejor och sådant..??
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: Flera kommandon, vad är skillnaden?

Inlägg av Rasmus »

Nu är jag inte jätte haj på detta med shellskript men den kör ju skriptet uppifrån och ner. Alltså körs ls sen pwd. && gör att kommandot som står före körs först, när det är klart kör den det andra. Alltså körs ls sen pwd. ; använder man istället för en ny rad och funkar därför likadant som #1. Alltså borde alla göra exakt samma sak.

EDIT: lättare att läsa med FET typsnitt
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

Re: Flera kommandon, vad är skillnaden?

Inlägg av Lars »

Varianten ls && pwd är inte samma sak som de andra. Det andra kommandot (pwd) körs enbart om det första kommandot (ls) inte returnerar något fel. Testa med false && echo 1 och true && echo 1
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Flera kommandon, vad är skillnaden?

Inlägg av mcNisse »

Alternativ 1 och 3 är samma.

Alternativ 2 betyder att pwd körs enbart om ls går bra. Det går att köra ett kommande om det misslyckas med ||.

testa

Kod: Markera allt

true && echo ok
true || echo fel
false && echo ok
false || echo fel
En & betyder att programmet ska köras i bakgrunden.
Användarvisningsbild
Osprey
Inlägg: 6310
Blev medlem: 06 apr 2008, 00:09
OS: Ubuntu
Ort: Göteborg/Mölndal/Falkenberg
Kontakt:

Re: Flera kommandon, vad är skillnaden?

Inlägg av Osprey »

Tack för snabba och bra svar!! :)
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
Användarvisningsbild
Rasmus
Inlägg: 2291
Blev medlem: 07 sep 2006, 18:33
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Svalsta

Re: Flera kommandon, vad är skillnaden?

Inlägg av Rasmus »

Lars, mcNisse: Intressant, kan vad bra att veta när man bygger skript.
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

Re: Flera kommandon, vad är skillnaden?

Inlägg av per9000 »

mcNisse skrev:Alternativ 1 och 3 är samma.

Alternativ 2 betyder att pwd körs enbart om ls går bra. Det går att köra ett kommande om det misslyckas med ||.

testa

Kod: Markera allt

true && echo ok
true || echo fel
false && echo ok
false || echo fel
En & betyder att programmet ska köras i bakgrunden.
De verkar gå att kombinera rätt så smidigt :)

Kod: Markera allt

$true && echo ok || echo nok
ok

$false && echo ok || echo nok
nok

/Per
--
Per Erik Strandberg
Yet Another IT Consultant
Användarvisningsbild
mcNisse
Inlägg: 5211
Blev medlem: 06 feb 2007, 20:51
OS: Debian
Utgåva: Vet inte/ingen utgåva passar

Re: Flera kommandon, vad är skillnaden?

Inlägg av mcNisse »

Var försiktig med att kombinera && och ||. Det känns som om man skulle kunna ställa till det för sig.
Dessa uttryck ger samma resultat, echo t triggas av false på olika positioner.

Kod: Markera allt

true && false || echo t
false && false || echo t
Användarvisningsbild
per9000
Inlägg: 931
Blev medlem: 07 maj 2007, 11:06
OS: Ubuntu
Utgåva: 23.04 Lunar Lobster
Ort: Västerås
Kontakt:

Re: Flera kommandon, vad är skillnaden?

Inlägg av per9000 »

mcNisse skrev:Var försiktig med att kombinera && och ||. Det känns som om man skulle kunna ställa till det för sig.
Dessa uttryck ger samma resultat, echo t triggas av false på olika positioner.

Kod: Markera allt

true && false || echo t
false && false || echo t
Shit pommes frites - det har du såklart rätt i... Det får bli ifsatser för min del tror jag.

/Per
--
Per Erik Strandberg
Yet Another IT Consultant
Skriv svar

Återgå till "Terminalforum"