루프(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")"