GNU/Linux >> Znalost Linux >  >> Linux

Pokračování bash line po &&a || Zdokumentováno?

Tuto konstrukci jsem často viděl ve skriptech a sám jsem ji používal, ale vadí mi, že ji nemohu najít v dokumentaci.

Příklad:

[ -f file1 ] &&
[ -f file2 ] &&
echo "Both files exist." ||
echo "One or the other file doesn't exist."

To lze také provést zpětnými lomítky před novými řádky, jak je uvedeno v man bash :

If a <newline> pair appears,  and  the  backslash  is  not
itself  quoted,  the <newline> is treated as a line continuation (that
is, it is removed from the input stream and effectively ignored).

Příklad:

[ -f file1 ] && 
[ -f file2 ] && 
echo "Both files exist." || 
echo "One or the other file doesn't exist."

…ale nezdá se, že by to bylo nutné. První výše uvedená verze funguje i bez zpětných lomítek.

Kde to najdu v man bash ? (Je to také bash specifické nebo vyhovující POSIX?)

Přijatá odpověď:

Nový řádek je ignorován v několika kontextech, kde je zjevně neukončený příkaz. Tyto kontexty zahrnují za ovládacím operátorem (&& , || , | , & , ; , ;; , ale ne ! ).

Nevidím to zdokumentované v manuálu bash.

V POSIX je specifikováno prostřednictvím gramatických pravidel. Kdekoli mají pravidla linebreak , můžete mít nula nebo více zalomení řádku.


Linux
  1. Chybí struny po zřetězení dvou nebo více proměnných řetězců v bash?

  2. Příklady Bash for Loop a While Loop

  3. Jak v Bash přidám řetězec za každý řádek v souboru?

  1. Čtěte řádek po řádku v bash skriptu

  2. Historie Bash bez čísel řádků

  3. Shell Script, čtěte na stejném řádku po ozvěně zprávy

  1. Limit linky Shebang v bash a linuxovém jádře

  2. Bash - příkaz Datum a mezera

  3. Po přihlášení spusťte bash skript