この構成をスクリプトでよく見て、自分で使用しましたが、ドキュメントで見つからないように思われるのが気になります。
例:
[ -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."
…しかし、これは必要ではないようです。上記の最初のバージョンは、円記号がなくても機能します。
これはmanbash
のどこにありますか ? (また、これは bash
ですか 特定またはPOSIX準拠ですか?)
承認された回答:
明らかに終了していないコマンドがあるいくつかのコンテキストでは、改行は無視されます。これらのコンテキストには、制御演算子( &&
)の後が含まれます 、 ||コード> 、
|コード> 、
&コード> 、
;コード> 、
;;
、ただし!
ではありません 。
これはbashマニュアルに記載されていません。
POSIXでは、文法規則によって指定されます。ルールに改行
がある場合 、0個以上の改行を含めることができます。