だから私はUnixコマンドにさまざまな引数を渡すPythonスクリプトを書いており、すべてのコマンド出力を同じファイルに保存する必要があります。
しかし、私が知っている唯一の方法は、ファイルを書き換えることです。シェルスクリプトにファイルを追加する方法を知っている人はいますか?
私のUnixコマンドが次のようになっているとしましょう。
Foo
私の交換員は次のとおりです。
bar
bar1
bar2
Unixコマンドは次のとおりです。
foo bar > output.txt
foo bar1 > output.txt
foo bar2 > output.txt
Output.txtの内容は「foo bar2」のみです。
3つのコマンド出力がすべて出力ファイルに表示されるようにファイルを追加する方法を知っている人はいますか?
ベストアンサー1
3つの個別のコマンドは、output.txt
それぞれ新しいデータを書き込む前にファイルを消去します。これが、ファイルが最後に実行されたコマンドのデータのみを含むようになる理由です。
一連のコマンドを使用できるファイルにリダイレクトするには
{
foo bar
foo bar1
foo bar2
} >output.txt
または一行で、
{ foo bar; foo bar1; foo bar2; } >output.txt
中かっこは複合コマンド。リダイレクト終了}
後のリダイレクトみんな複合コマンドの完全な出力です。
を使用しているため、>
複合output.txt
コマンドの出力がファイルに書き込まれる前にファイルは空になります。ファイルに追加するには>>
。
別のオプション:
for operand in bar bar1 bar2; do
foo "$operand"
done >output.txt
または中括弧拡張を含むシェルで
for operand in bar{,1,2}; do
foo "$operand"
done >output.txt
ここでfor
ループは複合命令で、{ ...; }
上記の複合命令のように方向転換が可能です。
同様に、ファイルの元の内容を保持してoutput.txt
ファイルに追加するだけの場合は、リダイレクトに>>
代わりに使用してください。>