毎秒時間を印刷するスクリプトに時間経過関数を書きたいです。たとえば、出力は次のようになります。
finding files inside a directory
time elapse HH:MM:SS
- HHは時間です
- MMは分です。
- SSセカンド
そして、スクリプトの実行が完了してからライン時間が経過し、関数は新しいラインを印刷せずに1秒間画面でカウントを停止します。
ベストアンサー1
私が投稿したのと同じストップウォッチ機能を作成します。ここ、呼び出すと、実行中のコマンドのプロセスIDを監視するように指示します(これはGNUと見なされますdate
)。
#!/bin/bash
stopwatch(){
date1=`date +%s`;
while kill -0 $1 2>/dev/null; do
printf "Elapsed time: %s\r" "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)";
sleep 0.1
done
}
find /path/to/dir > output 2> error &
stopwatch $!
Ctrlこのアプローチは、+を使用してスクリプトを終了すると、プロセスがバックグラウンドで実行され続けることを意味しCますfind
。ステファンのソリューションより良い考えです。