GNU/Linux >> Linux の 問題 >  >> Linux

&&および||後の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."

…しかし、これは必要ではないようです。上記の最初のバージョンは、円記号がなくても機能します。

これはmanbashのどこにありますか ? (また、これは bash ですか 特定またはPOSIX準拠ですか?)

承認された回答:

明らかに終了していないコマンドがあるいくつかのコンテキストでは、改行は無視されます。これらのコンテキストには、制御演算子( &&)の後が含まれます 、 || |;;; 、ただしではありません 。

これはbashマニュアルに記載されていません。

POSIXでは、文法規則によって指定されます。ルールに改行がある場合 、0個以上の改行を含めることができます。


Linux
  1. Bashで2つ以上の可変文字列を連結した後、文字列が欠落していますか?

  2. Bashスクリプトでのコメントの記述:単一行、インライン、および複数行のコメント

  3. Bash の For ループと While ループの例

  1. Bash で、ファイルの各行の後に文字列を追加するにはどうすればよいですか?

  2. Bashスクリプトで1行ずつ読む

  3. シェルスクリプト、メッセージをエコーし​​た後に同じ行で読む

  1. BashForループガイドと例

  2. コマンドライン(bash)の「And」の違い??

  3. Bash - 日付コマンドとスペース