루프에서 행의 증가를 모니터링하려면 wc -l을 사용하십시오.

루프에서 행의 증가를 모니터링하려면 wc -l을 사용하십시오.

루프(wc -l)에서 결과를 수신하는 파일의 줄 수 증가를 모니터링하기 위해 짧은 bash 스크립트를 작성했습니다.

그러므로:

printf "Name of file to monitor\n"
read file

printf "How long to monitor file growth in minutes\n"
read time

printf "Interval between loops\n"
read s

a=$((time * 60))                                   # works out overall time in seconds
b=$((a / s))                                       # no of loops

for i in $( eval echo {0..$b} )
do
    printf "Loop number: %-10.2d Interval: %-10.2d Line Count: %-10.2d.\n" $i  $s  $'wc -l $file'   
    sleep $s 
done
printf "finished\n"

이 줄의 마지막 매개변수에 문제가 있습니다 printf. function wc내에서 함수를 올바르게 기술하는 방법을 잘 모르겠습니다 printf.

답변1

호출하면 wc -l filename줄 수 옆에 파일 이름이 출력됩니다. 명령 대체를 큰따옴표로 묶지 않으면 단어가 구분됩니다. 즉, 공백이 있으면 여러 단어로 확장됩니다. 마지막으로, printf주어진 매개변수를 모두 사용할 때까지 형식을 반복해서 사용합니다.(이봐).

올바른 접근 방식은 다음과 같습니다.

printf "Loop number: %-10.2d Interval: %-10.2d Line Count: %-10.2d \n" $i  $s  $l "$(wc -l <"$file")"

관련 정보