通常、引数を1つ渡すだけで済みます。
echo abc | cat
echo abc | cat some_file -
echo abc | cat - some_file
2つの引数を渡す方法はありますか?何かのようなもの
{echo abc , echo xyz} | cat
cat `echo abc` `echo xyz`
最初に両方の結果をファイルに保存できます
echo abc > file1
echo xyz > file2
cat file1 file2
しかし、その後、誤ってファイルを上書きする可能性がありますが、これは大丈夫ではありません。これは、非対話型のスクリプトになります。基本的に、2つの任意のコマンドの結果をcat
ファイルに書き込まずに渡す方法が必要です。
更新:申し訳ありませんが、この例は問題を隠しています。一方で{ echo abc ; echo xyz ; } | cat
動作するようには思えない、出力が起因しているecho
、のではありませんcat
。
より良い例は{ cut -f2 -d, file1; cut -f1 -d, file2; } | paste -d,
、期待どおりに機能しないことです。
と
file1:
a,b
c,d
file2:
1,2
3,4
予想される出力は次のとおりです。
b,1
d,3
解決済み:
プロセス置換を使用します。cat <(command1) <(command2)
または、次を使用して名前付きパイプを作成しmkfifo
ます。
mkfifo temp1
mkfifo temp2
command1 > temp1 &
command2 > temp2 &
cat temp1 temp2
temp1とtemp2が事前に存在しないことを確認する限り、エレガントではなく冗長ですが、正常に動作します。