Dette spørsmålet har allerede et svar her :
Kommentarer
- Eksemplet fungerer for meg; hva får du?
- @JeffSchaller Beklager, jeg gjorde det tydeligere. Det jeg mener er at « er nødvendig for noen ting, men ikke for andre. Jeg vil bare vite riktig bruk av den. Og av en eller annen merkelig grunn \ kan ikke fremheves av stjernen i kommentarer
- \ er en eksplisitt fortsettelse; bash gir deg PS2 hvis kommandoen ikke er fullført ennå. Er det forvirringen?
- Jeg ' er ikke sikker på at dette er ganske duplikat, i det minste som det er spurt i tittelen. Selv om OP spør i sammenheng med & &, er det fortsatt generelt nok, et mer omfattende svar kan gis som ikke er spesifikt til det.
Svar
Hvis utsagnet ville være riktig uten fortsettelse, må du bruke \
. Derfor fungerer følgende uten tilbakeslag, ettersom du ikke kan avslutte en kommando med en &&
:
echo 1 && echo 2
Her trenger du tilbakeslag:
echo 1 2 3 \ 4
eller
echo 1 \ && echo 2
Ellers, bash ville utføre kommandoen rett etter å ha behandlet den første linjen uten å vente på den neste.
Kommentarer
- Så " fortsettelse " er begrepet jeg lette etter. Bash manual forklarer det i sitat-delen, så jeg fant det … Nå sa du at man kan ' t avslutter en linje med
&&
og det girPS2
spørsmål. Hva er noen av de andre tilfellene ? Er det en liste et sted i bash-manualen?
Svar
En av retningslinjene for skriptstil I » har opplevd i løpet av mitt profesjonelle liv i et stort IT-selskap, forpliktet meg til å bruke nr lenger enn 80 tegn per linje i et shellscript og innrykk etter å ha brutt linjen. Også måtte jeg bryte linje før et rør eller & & eller ||. Som:
command1 \ && command2 \ || command3 \ | command4
Målet var å ha en klar lesbarhet.
Kommentarer
- Jeg gjorde det også, til noen påpekte at du kan utelate \ hvis du legger til & &, || , og | på forrige linje: Enda bedre lesbarhet.
- @ole yup jeg fikk det, men hvis det er en retningslinje å følge, ville koden min ikke ' ikke passere gjennomgå om jeg ' d gjør det
- +1. Jeg pleier å bruke stilen som er nevnt av @OleTange (i det minste for lange eller kompliserte kommandoer) – men stilen du nevner har den klare fordelen at du kan se hva slags fortsettelse det er bare ved å se bare på selve linjen, du trenger ikke ' t må også se på slutten av forrige linje. Hyggelig. Jeg ' er ikke sikker på om jeg liker det nok til å tvinge meg til å endre vanene mine, men jeg liker det.
- Ærlig talt foretrekker jeg å sette
&&
og||
i begynnelsen av linjene. Akkurat som jeg satteOR
ogAND
i begynnelsen av linjene i SQL WHERE-setningene. - IMO, det er stor fordel i konsistens. Hvis du i noen tilfeller MÅ bruke
` and in other cases it is optional, I would prefer to use
`overalt der kommandoen fortsetter på neste linje. Ved å skanne et skript kan du lett gå glipp av at en linje fortsettes fordi den slutter med&&
eller||
eller|
. (Og som @ErikE sier, foretrekker jeg faktisk å ha min&&
og||
på neste linje).