タイムラプス機能の構築 [閉じる]

タイムラプス機能の構築 [閉じる]

毎秒時間を印刷するスクリプトに時間経過関数を書きたいです。たとえば、出力は次のようになります。

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ステファンのソリューションより良い考えです。

おすすめ記事