
実際には、完全な出力データを含むファイル名であるいくつかの出力部分を生成するコマンドがあります。一般的に使用するファイル名を抽出し、別のcut
プログラムに渡したいと思います。たとえば、cat
ファイルの内容が表示されます。
実行中の実際のコマンドを共有することはできませんが、再現性のために次のよう./my-command args
に置き換えることができます。echo 1:2:3:4:file.txt
だから、次のことを試しました。
./my-command args | cut -d : -f 5 | cat
cat
ただし、これは引数なしで呼び出されたときにstdin(私のファイル名を含む)の内容をstdoutにコピーするため、ファイル名のみを印刷します。
cat
これで、コマンドフローを逆にし、サブシェルを介して引数を渡すことでBashの問題を解決できることがわかりました。
cat `./my-command args | cut -d : -f 5`
これはファイルの内容を印刷しますが、呼び出しに簡単なコマンドを追加して基本コマンドの出力を単純にパイプできないため、特にユーザーフレンドリーではありません。
cat
標準入力からファイル名を取得して内容を印刷する同様のプログラムはありますか?それともcat
stdinをパラメータとして扱う方法はありますか?
ノート
私はstdinからファイル名を読み、cat
私の環境で呼び出すbash関数を定義できることに気づきました。ただし、出力データを直接ダンプするこの手法はエンドユーザー文書に含める必要があり、単純なシェルに依存しないアプローチが非常に好まれます。
答え1
さらに調査を行った後、私はこれがまさに真実であることに気づきました。xargs
のために設計:
./my-command args | cut -d : -f 5 | xargs cat
これは、stdinの出力をcat
実際のファイル名の呼び出しに変換してファイルの内容を印刷します。