バッシュ時間減算

バッシュ時間減算

Bashには2つの時間変数があります。私は2つの間の時間差を取得する方法を見つけようとしています。

はい、オンラインで非常に多くの例を読みましたが、それらのどれも「簡単な」解決策を持っているようではありません。代わりに、Bashの時間的算術は「事後検討」のようです。

私が読んだリンクは次のとおりです。 リンク1

リンク2

リンク3

「エレガントな」ソリューションはないようです(私の考えでは)。

だから私の変数は次のようになります。

    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スクリプトが最後に実行された時刻を印刷します。よりマニュアルページ

$SECONDSBashスクリプトでも使用できます。プロセスが開始されてから数秒が節約されます。したがって、echo It took $SECONDSスクリプトの終わりにそうすることができます。$SECONDS検索バッシュのマニュアルページ

timesBashには組み込みの機能もあります。timeこれは、渡されたコマンド(実際には引数を使用しない)ではなく、シェル自体(それを実行するプロセス)に似た情報を印刷します。また男乱交

編集:2番目のリンクは実際にあなたが試しているものと非常によく似た解決策を提供し、Romanが述べた+%s形式の文字列も使用します。

おすすめ記事