シェルスクリプトを作成するときに、人々が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つ以上のスペースで区切る必要があります。 。それ以外の場合、リダイレクト演算子の周りの引用符なしスペースはオプションです。>>
>|
>&
<
<<
<<-
<>
バラよりOpen Group基本仕様7号、2018年版、シェルとユーティリティ、第 2 章、シェルコマンド言語「もっと学ぶ。