ioリダイレクト演算子の後にスペースがありますか? [コピー]

ioリダイレクト演算子の後にスペースがありますか? [コピー]

シェルスクリプトを作成するときに、人々がI / Oリダイレクト演算子の後にスペースを入れるかどうかにかなりの不一致があることがわかりました。たとえば、

foo >bar.txt

動作しますが、次も動作します。

foo > bar.txt

....またはさらに:

foo       >             bar.txt

実際にもLinuxドキュメントプロジェクトページがっかりするほど一貫性がありません2>&1吹く端末(空白あり)がある場所にあり、> filename別の場所にあります!

私は後者が私に2つの異なる主張のように見えるので前者を使用してきましたが、2つの間に違いや推論があるかどうか疑問に思います。

何よりも>bar.txt携帯性が良いですか?> bar.txtまたは、1つの定義ケースに1つの構文を使用し、他の場合に別の構文を使用する必要がありますか?

答え1

  1. 文字<>および&|シェルに特別であり、引用されていない場合はどこでも特別な意味で認識されます。

  2. ポータブルリダイレクト演算子は>、、、、、、、、、、です。​​リダイレクト演算子の前には、ファイル記述子を表す数字が続くことがあります。この場合、数字とリダイレクト演算子の間にはスペースを入れないでください。数字は前の単語(存在する場合)と1つ以上のスペースで区切る必要があります。 。それ以外の場合、リダイレクト演算子の周りの引用符なしスペースはオプションです。>>>|>&<<<<<-<>

バラよりOpen Group基本仕様7号、2018年版、シェルとユーティリティ、第 2 章、シェルコマンド言語「もっと学ぶ。

関連情報