好日子字符串的安全限制,bash腳本 - 從命令的輸出
我寫一個執行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
謝謝。
可能重複[什麼是環境變量值的最大值?](http://stackoverflow.com/questions/1078031/what-is-the-maximum-size-of-an-environment -variable-value) – dogbane
爲什麼不使用'wc -l'而不是'grep -c'。*''?另外,你應該引用你的變量:'echo「$ TEST_TEXT」'在這兩個地方。 –
'find -iname * .cpp | rm'將不起作用,因爲rm不會從stdin中獲取文件,但爲什麼你認爲它「如果我們有很多結果可能會失敗」? – Kevin