Shell Syntax: Hvordan bruker du \ til å bryte linjer riktig? [duplikat]

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 gir PS2 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 satte OR og AND 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).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *