&&と||その後のbashラインの連続は文書化されていますか?

&&と||その後のbashラインの連続は文書化されていますか?

私はこの設定をスクリプトで頻繁に見て直接使用しますが、ドキュメントには見つからないことが私を悩ませています。

例:

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

後述のように、改行文字の前にバックスラッシュを使用してこれを実行することもできます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).

例:

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

…しかし、そうする必要はないようです。上記の最初のバージョンはバックスラッシュなしで動作します。

これをどこで見つけることができますかman bash? (また、これはbash具体的かPOSIXと互換性がありますか?)

ベストアンサー1

終了していないコマンドが明確に存在する状況によっては、改行文字は無視されます。これらのコンテキストは、制御演算子(、、、、、、が含まれ&&ていない)の後に含まれます。|||&;;;!

bashのマニュアルではこれを見ることができません。

POSIXでは通過しました。文法規則。ルールのどこにもlinebreakゼロ個以上の改行文字があるかもしれません。

おすすめ記事