BASH脚本 - 来自命令输出的字符串的安全限制

Clo*_*oud 1 svn bash xargs

美好的一天,

我正在编写一个相对简单的BASH脚本,它执行SVN UP命令,捕获控制台输出,然后对文本进行一些后期处理.

例如:

#!/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
Run Code Online (Sandbox Code Playgroud)

这按预期工作(即:如上面的代码中所述),但我担心如果我在一个非常大的存储库上运行它会发生什么.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
Run Code Online (Sandbox Code Playgroud)

谢谢.

Kev*_*vin 5

运用

var=$(hexdump /dev/urandom | tee out)
Run Code Online (Sandbox Code Playgroud)

bash没有抱怨; 我有点超过1G和23.5M线杀了它.只要输出适合系统内存,您就不必担心.