プロセスの置換と組み合わせた入力リダイレクトを理解しようとしています。 bash
3を使用しています
tr
の例は次のとおりです
_$ tr "o" "a" <(echo "Foo")
tr: extra operand `/dev/fd/63'
Try `tr --help' for more information.
_
なぜこれがうまくいかないのか理解できたと思います。プロセス置換<( )
はファイル記述子を作成し、tr
は標準入力からのみ読み取ります。
適切なリダイレクトで機能させるにはどうすればよいですか?
私は単にパイプを使用できることを知っています:
_$ echo "Foo" | tr "o" "a"
Faa
_
しかし、私はより良い理解を得ようとしています。 _man bash
_を使用して、_<&
_を使用していくつかのことを試しましたが、自分が何をしているのかよくわかりません。
tr
を使用してプロセス置換を適切に使用するにはどうすればよいですか?
あなたは本当に近かった:
_tr "o" "a" < <(echo "Foo")
_
置換<()
はファイル記述子を作成し、シェルへのパスを貼り付けるだけです。理解するには、以下を実行するだけです。
_<(echo blubb)
_
エラーが表示されます:
_-bash: /dev/fd/63: Permission denied
_
そのため、_/dev/fd/63
_をシェルに貼り付けるだけで、_/dev/fd/63
_は単純なパイプであるため、実行できません。上記のtr
-例では、パイプに書き込むのは_echo "Foo"
_であり、入力リダイレクトを介して_<
_ファイル記述子から読み取るのはtr
コマンドです。
Bash One-Liners Explained シリーズは、これらすべてについて理解するのに非常に役立ちます。
具体的には、上記のリンク先の記事はすべて入力リダイレクトに関するものです。
上記の特定の例を解決するには:
> tr "o" "a" <<< $(echo "Foo")
Faa