Bashには2つの時間変数があります。私は2つの間の時間差を取得する方法を見つけようとしています。
はい、オンラインで非常に多くの例を読みましたが、それらのどれも「簡単な」解決策を持っているようではありません。代わりに、Bashの時間的算術は「事後検討」のようです。
私が読んだリンクは次のとおりです。 リンク1
「エレガントな」ソリューションはないようです(私の考えでは)。
だから私の変数は次のようになります。
TIME_START="date +%H:%M:%S //Start of script
// The script
TIME_END="date +%H:%M:%S //End of script
だから経過時間を取得したい。スクリプトの実行には(センサー、ハードウェアなどとやり取りする)ために最大3時間かかることがあります。このTIME_START
変数はMySQLに挿入され、「経過時間」計算のためにBash(スクリプトが終了したとき)によって取得されます。
次のコードがうまくいくとどこかで読みましたが、うまくいきません。
diff=$(expr $TIME_END - $TIME_START)
echo $diff
どんなアイデアがありますか?
ありがとう
ダニー
答え1
date +%s
スクリプト期間を直接計算することに加えて、(好ましくはRomanが指摘したように戻り値を使用して)いくつかの異なるオプションがあります。
time
実行できるコマンドがあり、time some-script.sh
スクリプトが最後に実行された時刻を印刷します。よりマニュアルページ。
$SECONDS
Bashスクリプトでも使用できます。プロセスが開始されてから数秒が節約されます。したがって、echo It took $SECONDS
スクリプトの終わりにそうすることができます。$SECONDS
検索バッシュのマニュアルページ。
times
Bashには組み込みの機能もあります。time
これは、渡されたコマンド(実際には引数を使用しない)ではなく、シェル自体(それを実行するプロセス)に似た情報を印刷します。また男乱交。
編集:2番目のリンクは実際にあなたが試しているものと非常によく似た解決策を提供し、Romanが述べた+%s形式の文字列も使用します。
答え2
使用できますdate +%s
。 1970-01-01 00:00:00 UTC 以降の秒数を保存します。