Dette spørgsmål har allerede et svar her :
Kommentarer
- Eksemplet fungerer for mig; hvad får du?
- @JeffSchaller Beklager, jeg gjorde det klarere. Hvad jeg mener er, at \ er nødvendigt for nogle ting, men ikke for andre. Jeg vil bare vide, hvordan det bruges korrekt. Og af en eller anden underlig årsag \ kan ikke fremhæves af stjernen i kommentarer
- \ er en eksplicit fortsættelse; bash giver dig PS2, hvis kommandoen endnu ikke er fuldført. Er det forvirringen?
- Jeg ' er ikke sikker på, at dette er en hel kopi, i det mindste som bedt om i titlen. Selvom OP spørger i sammenhæng med & &, er det stadig generelt nok til at der kan gives et mere omfattende svar, der ikke er specifikt til det.
Svar
Hvis udsagnet ville være korrekt uden fortsættelse, skal du bruge \
. Derfor fungerer følgende uden tilbageslag, da du ikke kan afslutte en kommando med en &&
:
echo 1 && echo 2
Her har du brug for tilbageslag:
echo 1 2 3 \ 4
eller
echo 1 \ && echo 2
Ellers bash ville udføre kommandoen lige efter at have behandlet den første linje uden at vente på den næste.
Kommentarer
- Så " fortsættelse " er det udtryk, jeg ledte efter. Bash manual forklarer det i afsnittet om tilbud, så jeg fandt det … Nu sagde du, at man kan ' t slutter en linje med
&&
, og det giverPS2
prompt. Hvad er nogle af de andre sager ? Er der en liste et eller andet sted i bash-manualen?
Svar
En af retningslinjerne for scriptstilen I ” har stødt på i mit professionelle liv i et stort it-firma, tvang mig til at bruge nr længere end 80 tegn pr. linje i et shellscript og indrykning efter at have brudt linjen. Jeg måtte også bryde linjen før et rør eller & & eller ||. Ligesom:
command1 \ && command2 \ || command3 \ | command4
Målet var at have en klar læsbarhed.
Kommentarer
- Jeg gjorde det også, indtil nogen påpegede, at du kan udelade \ hvis du lægger & &, || og | på den forrige linje: Endnu bedre læsbarhed.
- @ole yup Jeg fik det, men hvis der er en retningslinje at følge, ville min kode ikke ' ikke passere gennemgå, hvis jeg ' d gør det
- +1. Jeg har en tendens til at bruge den stil, der er nævnt af @OleTange (i det mindste for lange eller komplicerede kommandoer) – men den stil, du nævner, har den klare fordel, at du kan se, hvilken slags fortsættelse det er bare ved kun at se på selve linjen, du don ' t skal også se i slutningen af den forrige linje. Pæn. Jeg ' er ikke sikker på, om jeg kan lide det nok til at tvinge mig selv til at ændre mine vaner, men jeg kan godt lide det.
- Helt ærligt foretrækker jeg at sætte
&&
og||
i begyndelsen af linjer. Ligesom jeg satteOR
ogAND
i begyndelsen af linjer i mine SQL WHERE-klausuler. - IMO, der er stor fordel ved konsistens. Hvis du i nogle tilfælde SKAL bruge
` and in other cases it is optional, I would prefer to use
`overalt, hvor min kommando fortsætter på den næste linje. Ved at scanne et script kan du let gå glip af, at en linje fortsættes, fordi den slutter med&&
eller||
eller|
. (Og som @ErikE siger, foretrækker jeg faktisk at have min&&
og||
på næste linje).