私はこの設定をスクリプトで頻繁に見て直接使用しますが、ドキュメントには見つからないことが私を悩ませています。
例:
[ -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
ゼロ個以上の改行文字があるかもしれません。