GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mengenalinya Apakah Durasi Lebih Dari Satu Jam Di Beberapa Skrip Shell?

Saya mencoba memeriksa waktu berjalan dan jika lebih dari satu jam mengembalikan kesalahan, tetapi kode mengembalikan positif palsu sebentar-sebentar. Di firstRun.sh , saya membaca waktu sebagai:

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

dan di secondRun.sh Saya memeriksa waktu sebagai berikut:

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

Adakah yang bisa membantu saya menemukan di mana masalahnya? Apakah ada perbedaan antara menggunakan && dan -a dalam pernyataan if? Atau perbedaan antara menggunakan [] dan () ?

Jawaban yang Diterima:

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

%s mengembalikan detik sejak 1970-01-01 00:00:00 UTC.

Diskusi:mengapa detik lebih baik

Misalkan, misalnya, waktu mulai (boot) adalah 23:00 dan waktu saat ini adalah 00:23. Kemudian, $TIME negatif dan ini tidak akan berhasil:

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

Demikian pula, misalkan waktu mulai adalah 12:03 dan waktu saat ini adalah 14:00. Kemudian, cara di atas juga tidak akan berhasil, kali ini karena tes menit.


Linux
  1. Cara menggunakan input dalam skrip shell Anda

  2. Cara Menginstal Banyak Distribusi Linux pada Satu USB

  3. Bagaimana Cara Menjatuhkan Hak Istimewa Root Dalam Skrip Shell?

  1. Cara menjalankan skrip Python dari shell

  2. Cara menggemakan Baris Baru di Bash Shell Script

  3. Bagaimana cara menggunakan perintah su melalui adb shell?

  1. Berbagi Variabel di Beberapa Skrip Shell?

  2. Bagaimana Menguji Kepatuhan Posix Dari Skrip Shell?

  3. Bagaimana cara gzip banyak file menjadi satu file gz?