ループ(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
。関数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")"