Sida 1 av 1

Flera kommandon, vad är skillnaden?

Postat: 14 jun 2009, 14:12
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..??

Re: Flera kommandon, vad är skillnaden?

Postat: 14 jun 2009, 14:18
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

Re: Flera kommandon, vad är skillnaden?

Postat: 14 jun 2009, 14:27
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

Re: Flera kommandon, vad är skillnaden?

Postat: 14 jun 2009, 14:28
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.

Re: Flera kommandon, vad är skillnaden?

Postat: 14 jun 2009, 15:59
av Osprey
Tack för snabba och bra svar!! :)

Re: Flera kommandon, vad är skillnaden?

Postat: 14 jun 2009, 16:27
av Rasmus
Lars, mcNisse: Intressant, kan vad bra att veta när man bygger skript.

Re: Flera kommandon, vad är skillnaden?

Postat: 15 jun 2009, 15:25
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

Re: Flera kommandon, vad är skillnaden?

Postat: 15 jun 2009, 15:59
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

Re: Flera kommandon, vad är skillnaden?

Postat: 16 jun 2009, 17:28
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