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.