いくつかの可能性:
減算回date
から得られる:
#!/bin/bash
startdate=$(date +%s)
sleep 130
enddate=$(date +%s)
timetaken=$((enddate-startdate))
printf 'Total downtime was %d minutes and %d seconds\n' "$((timetaken/60))" "$((timetaken%60))"
外部プロセスdate
ない同じ(バッシュ4.2以降):
#!/bin/bash
printf -v startdate '%(%s)T' -1
sleep 130
printf -v enddate '%(%s)T' -1
timetaken=$((enddate-startdate))
printf 'Total downtime was %d minutes and %d seconds\n' "$((timetaken/60))" "$((timetaken%60))"
時間の減算と分と秒の計算は、arithmetic expansionを使用して行われます。
Bash's SECONDS
variable(あなたのためにおそらく最高)使用
:特殊変数SECONDS
が秒ごとにインクリメントされる整数値に設定された後
#!/bin/bash
SECONDS=0 # reset the SECONDS variable
sleep 130
timetaken=$SECONDS
printf 'Total downtime was %d minutes and %d seconds\n' "$((timetaken/60))" "$((timetaken%60))"
を。適切なTIMEFORMAT
と
バッシュの
time
キーワードを使用して
(ここでは、我々はMMの分SS秒として経過時間を書き込むことができません。それはMmSs
の形で示されます、すなわち、合計ダウンタイムは2分10秒でした。 linked answerは、すでに材料の多くが含まれていることを
#!/bin/bash
TIMEFORMAT='Total downtime was %0lR'
time {
# do your stuff in this block
sleep 130
}
注意。
これらはすべて1行になりました。ごめんなさい。私はそれがこのフォーラムでどのように正しくコード化されるかを知りませんでした。私は新しいですから。 – kkrrss
行の4つの先頭スペースでコードをインデントする必要があります。また、http://stackoverflow.com/help/mcveをご覧ください –
http://stackoverflow.com/questions/8903239/how-to-calculate-time-difference-in-bash-scriptこれを見ましたか? –