良い一日、
私は、SVN UP コマンドを実行し、コンソール出力をキャプチャし、テキストに対して後処理を行う、比較的単純な BASH スクリプトを作成しています。
例えば:
#!/bin/bash
# A script to alter SVN logs a bit
# Update and get output
echo "Waiting for update command to complete..."
TEST_TEXT=$(svn up --set-depth infinity)
echo "Done"
# Count number of lines in output and report it
NUM_LINES=$(echo $TEST_TEXT | grep -c '.*')
echo "Number of lines in output log: $NUM_LINES"
# Print out only lines containing Makefile
echo $TEST_TEXT | grep Makefile
これは期待どおりに機能します (つまり、上記のコードでコメントされているように) が、これを非常に大きなリポジトリで実行するとどうなるか心配です。BASH がコンソール コマンドの出力を保持するために使用できる最大バッファー サイズに制限はありますか?
同様の質問を探しましたが、探しているものとまったく同じものはありません。特定のスクリプトが大きな中間バッファーの場合にどのように使用する必要があるかについて読んだことがありますがxargs
、コンソール出力のキャプチャに関して同様のことがここで当てはまるかどうか疑問に思っています。
例えば:
# Might fail if we have a LOT of results
find -iname *.cpp | rm
# Shouldn't fail, regardless of number of results
find -iname *.cpp | xargs rm
ありがとうございました。