GNU/Linux >> Linux の 問題 >  >> Linux

複数のシェルスクリプトで期間が1時間を超えているかどうかを確認するにはどうすればよいですか?

実行時間を確認しようとしていますが、1時間以上かかるとエラーが返されますが、コードは断続的に誤検知を返します。 firstRun.sh内 、私は時間を次のように読みます:

export START_H=`date +%H`
export START_M=`date +%m`

およびsecondRun.sh 次のように時間を確認します:

CURRENT_H=`date +%H`
CURRENT_M=`date +%M`
TIME=`expr $CURRENT_H - $START_H`

if [ $TIME -gt 0 ] && [ $START_M -lt $CURRENT_M ]; then
    echo "boot time is more than an hour"
fi

誰かが問題がどこにあるかを見つけるのを手伝ってもらえますか? &&の使用に違いはありますか? および-a ifステートメントで?または、[]の使用の違い および()

承認された回答:

export BOOT_TIME=$(date +%s)
current=$(date +%s)
(( current - BOOT_TIME >3600 ))  && echo "More than an hour"

%s 1970-01-0100:00:00UTCからの秒数を返します。

ディスカッション:秒が優れている理由

たとえば、開始(ブート)時刻が23:00で、現在の時刻が00:23であるとします。次に、$TIME 負であり、これは機能しません:

if [ $TIME -gt 0 ] && [ $START_M -lt $CURRENT_M ]; then
    echo "boot time is more than an hour"
fi

同様に、開始時刻が12:03で、現在時刻が14:00であるとします。次に、今回は分のテストのため、上記も機能しません。


Linux
  1. シェルスクリプトで入力を使用する方法

  2. コマンドまたはシェルスクリプトの出力がStdoutまたはStderrであるかどうかを確認する方法は?

  3. Bashシェルスクリプトで改行をエコーする方法

  1. シェル スクリプトとはシェル スクリプトの作成方法

  2. 自分が画面にいるかどうかを確認するにはどうすればよいですか?

  3. 複数のファイルを1つのgzファイルにgzipする方法は?

  1. 1つのUSBに複数のLinuxディストリビューションをインストールする方法

  2. シェルスクリプトでルート権限を削除する方法は?

  3. 複数のシェルスクリプト間で変数を共有しますか?