Puncte:-1

Cum se compară timpul în starea if?

drapel us
#!/bin/bash
tag=$(awk -F, 'NR==1{printează $1}' /tmp/time.txt)# ieșire: 17:00
sub_time=$(data -d"${tag} +1:00" +'%H:%M')ieșire: 16:00
current_time=$(data |awk 'NR==1{print $4}' ieșire: 05:51:16
if [[ "$sub_time" -ge "$current_time" ]];atunci
   crontab <<EOF
   */15 * * * * bash server_shutdown.sh
EOF
fi

Vreau să compar „current_time” din sistemul actual cu eticheta de oprire a VM de la VM cu „sub_time” prin condiția if.

pLumo avatar
drapel in
Ce incerci sa faci? Ce este subtimul? De ce 17:00+1 = 16:00? De ce folosiți `awk` pentru a filtra rezultatul `date` în loc să utilizați șirul de format `date`? Ce nu funcționează (orice erori)? Evident, `-ge` poate compara doar numere întregi... dar tot ar trebui să adăugați acest lucru la întrebare.
Puncte:1
drapel in

Ar fi mai sigur să convertiți Data șiruri de caractere la marcaje temporale:

%s secunde de la 1970-01-01 00:00:00 UTC

[[ $(data +%s -d "$sub_time") -ge $(data +%s -d "$current_time") ]]

Desigur, puteți face acest lucru direct când creați variabilele:

sub_time=$(data -d"${tag} +1:00" +%s)
current_time=$(data +%s)
if [[ $subtime -ge $current_time ]]; atunci
   ...
fi

  • În loc să creeze ora curentă singur, ați putea folosi variabila bash $EPOCHSECONDS (bash > 5.0).
  • Ai putea folosi, de asemenea printf în loc de Data pentru a-l crea: printf -v current_time '%(%s)T'

Rețineți că aceste opțiuni ar putea să nu fie foarte portabile.

Haridvpsk avatar
drapel us
azureuser@puppetclient-ubuntu:~$ echo $timp_actual „1632388663” azureuser@puppetclient-ubuntu:~$ echo $sub_time 1632384000 altfel condiția se execută de ce.?
Puncte:0
drapel li
#!/bin/bash
tag=$(awk -F, 'NR==1{printează $1}' /tmp/time.txt)# ieșire: 17:00
sub_time=$(data -d"${tag} +1:00" +'%H:%M')#output: 16:00
current_time=$(data |awk 'NR==1{print substr($5,0,5)}')#output: 05:51
# pe sistemul meu, al 5-lea câmp are timpul, în timp ce al 4-lea câmp are anul.
# așa că am schimbat asta în awk
dacă [[ "$sub_time" > "$current_time" ]];atunci # comparație făcută lexicografic
   crontab <<EOF
   */15 * * * * bash server_shutdown.sh
EOF
fi
pLumo avatar
drapel in
În loc să filtrați rezultatul `date` cu `awk`, de ce să nu folosiți pur și simplu `date +%H:%M`?
Haridvpsk avatar
drapel us
după ce condiția este satisfăcută și locul meu de muncă cron nu este creat de ce?
Haridvpsk avatar
drapel us
Mulțumesc mult, domnule PLumo și Mahek, ambele răspunsuri funcționează pentru mine.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.