좋은 날로부터 문자열에 대한 안전 한계,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
감사합니다. 불평하지 않았다
var=$(hexdump /dev/urandom | tee out)
Bash를 이용한
중복 가능성 (http://stackoverflow.com/questions/1078031/what-is-the-maximum-size-of-an-environment -variable-value) – dogbane
왜'grep -c '. *''대신에'wc -l'을 쓰지 않으시겠습니까? 또한 두 곳에서'echo "$ TEST_TEXT"변수를 인용해야합니다. –
'find -iname * .cpp | rm'은 stdin에서 파일을 가져 가지 않기 때문에 작동하지 않을 것이다. 그러나 왜 우리가 많은 결과를 얻으면 실패 할까? – Kevin