次のコマンドは何をしますか?特に、-
入力リダイレクトの役割を理解していません。
cat <<-EOF | command $argument
first option
second option
EOF
-
入力リダイレクトに必須ですか?
答え1
からman bash
:
リダイレクト演算子が<<-の場合、入力行と区切り文字を含む行からすべての先行タブ文字が削除されます。これにより、シェルスクリプトのドキュメントを自然にインデントできます。
$ cat <<-EOF
foo
bar
EOF
foo
bar
答え2
ここにあるドキュメントに関するあなたの質問に関して、上記のChrisの答えに何かを追加したいと思います。
cat - filename <<-EOF
foo
bar
EOF
上記のコードを見ると2があります-
。どちらも異なる目的を持っています。 1)-EOF
区切り記号で先行タブ文字を切り取ります。
2) cat - filename
:デフォルトでは、最初の標準入力内容(区切り文字が見つかるまで)+ファイル名の内容を印刷します。 catは、-
標準入力とファイルの内容の順序を制御するために特別にこれを提供します。上記の場合、変更コマンドはcat filename -
ファイル名と標準入力の内容を印刷します(区切り文字が見つかるまで)。