<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">
Denna fråga har redan ett svar här :
Kommentarer
- Exemplet fungerar för mig; vad får du?
- @JeffSchaller Tyvärr, jag gjorde det tydligare. Vad jag menar är att \ behövs för vissa saker men inte för andra. Jag vill bara veta hur den används korrekt. Och av någon udda anledning \ kan inte markeras av asterisken i kommentarer
- \ är en uttrycklig fortsättning; bash ger dig PS2 om kommandot ännu inte är klart. Är det förvirringen?
- Jag ' Jag är inte säker på att det här är en hel kopia, åtminstone som du frågar i titeln. Även om OP frågar inom ramen för & &, är det fortfarande tillräckligt allmänt att ett mer omfattande svar kan ges som inte är specifikt till det.
Svar
Om påståendet skulle vara korrekt utan fortsättning måste du använda \
. Följande fungerar därför utan bakåtvänd snedstreck eftersom du inte kan avsluta ett kommando med en &&
:
echo 1 && echo 2
Här behöver du backslash:
echo 1 2 3 \ 4
eller
echo 1 \ && echo 2
Annars, bash skulle utföra kommandot direkt efter bearbetning av första raden utan att vänta på nästa.
Kommentarer
- Så " fortsättning " är termen jag letade efter. Bash-manualen förklarar det i offertavsnittet, så jag hittade det … Nu sa du att man kan ' t avslutar en rad med
&&
och det gerPS2
prompt. Vilka är några av de andra fallen ? Finns det någon lista någonstans i bash-manualen?
Svar
En av riktlinjerna för skriptstil I ” har stött på under mitt yrkesliv på ett stort IT-företag, tvingade mig att använda nr längre än 80 tecken per rad i ett shellscript och indrag efter att ha brutit linjen. Jag var också tvungen att bryta linjen före ett rör eller & & eller ||. Gilla:
command1 \ && command2 \ || command3 \ | command4
Målet var att ha en tydlig läsbarhet.
Kommentarer
- Jag gjorde det också tills någon påpekade att du kan utelämna \ om du lägger till & &, || och | på föregående rad: Ännu bättre läsbarhet.
- @ole yup jag fick det, men om det finns en riktlinje att följa, skulle min kod ' inte klara granska om jag ' gör det
- +1. Jag brukar använda den stil som nämns av @OleTange (åtminstone för långa eller komplicerade kommandon) – men den stil du nämner har den tydliga fördelen att du kan se vilken typ av fortsättning det är genom att bara titta på själva raden, du don ' t måste också titta på slutet av föregående rad. Trevlig. Jag ' är inte säker på om jag gillar det tillräckligt för att tvinga mig själv att ändra mina vanor, men jag gillar det.
- Uppriktigt sagt föredrar jag att sätta
&&
och||
i början av raderna. Precis som jag satteOR
ochAND
i början av rader i min SQL WHERE-klausuler. - IMO, konsistensen är stor. Om du i vissa fall MÅSTE använda
` and in other cases it is optional, I would prefer to use
`överallt där mitt kommando fortsätter på nästa rad. Genom att skanna ett skript kan du enkelt missa att en rad fortsätter eftersom den slutar med&&
eller||
eller|
. (Och som @ErikE säger, föredrar jag faktiskt att ha min&&
och||
på nästa rad).