2016-03-30 19 views
-1

私はbashスクリプトでこれらの2つのfuntionsを持ってbashで時刻を正しく設定する方法は?

function start_time { 
    unset date1 
    date1=$(date +"%s") 
} 

function stop_time { 
    unset date2 diff minutes seconds hours varhours varminutes varseconds 
    date2=$(date +"%s") 
    diff=$(($date2-$date1)) # <-- There is seconds 
    minutes=$((($diff/60))) 
    seconds=$((($diff % 60))) 
    hours=$((($minutes/60))) 

    if [ $hours != 0 ]; then varhours=$(echo "$hours Hours"); fi 
    if [ $minutes != 0 ]; then varminutes=$(echo "$minutes Minutes"); fi 
    if [ $seconds != 0 ]; then varseconds=$(echo "$seconds Seconds"); fi 

    echo "++ $1 : $varhours $varminutes $varseconds " 
} 

だから私は、次の方法でそれらを実行します。

start_time  
"some bash job for example sleep command for a while" 
stop_time "execution time was" 

スクリプトは、例えば3時間23分50秒を要する場合は、出力

実行時間だった次の方法で示しています。3時間203分50秒

正しい分を表示する方法があるかどうかということですが、123分はスクリプトが実行した合計時間であるため、予想される出力は次のようになります。 50分。

+0

command time --format "execution time was :%E" sleep 100 

(これは組み込みのいくつかのシェルを呼び出していないことを確認するためにcommand time代わりのtimeを使用している)あなたの時間が切り上げのように見えますおそらく2時間3分でなければなりません。 123分は2時間を少し超えているので。 –

+0

時間が表示されている必要がありますか、分と秒だけを使用できますか? – bluerojo

+0

http://stackoverflow.com/questions/8903239/how-to-calculate-time-difference-in-bash-script < - スクリプトの時間差を計算する方法を示します – bluerojo

答えて

1

なぜホイールを再発明するのですか? timeコマンドは、すでにあなたがやりたいことになります。

+2

''は標準化されておらず、存在しないかもしれません(比較的高価です。シェルはこの正確な目的のために 'command'組み込み関数を提供しています。 –

関連する問題