Score:-1

จะเทียบเวลาในเงื่อนไข if ได้อย่างไร?

ธง us
#!/bin/bash
tag=$(awk -F, 'NR==1{print $1}' /tmp/time.txt)# เอาต์พุต: 17:00 น.
sub_time=$(วันที่ -d"${tag} +1:00" +'%H:%M')เอาต์พุต: 16:00 น.
current_time=$(date |awk 'NR==1{print $4}' เอาต์พุต: 05:51:16
ถ้า [[ "$sub_time" -ge "$current_time" ]];แล้ว
   crontab <<EOF
   */15 * * * * ทุบตี server_shutdown.sh
อฟ
ไฟ

ฉันต้องการเปรียบเทียบ "current_time" ในระบบปัจจุบันกับแท็กปิด VM จาก VM ด้วย "sub_time" ผ่านเงื่อนไข if

pLumo avatar
in flag
คุณพยายามจะทำอะไร? ซับไทม์คืออะไร? ทำไม 17:00+1 = 16:00 น. เหตุใดคุณจึงใช้ 'awk' เพื่อกรองผลลัพธ์ของ 'วันที่' แทนที่จะใช้สตริงรูปแบบ 'วันที่' อะไรไม่ทำงาน (ข้อผิดพลาดใด ๆ )? เห็นได้ชัดว่า `-ge` เปรียบเทียบได้เฉพาะจำนวนเต็ม ... แต่คุณควรเพิ่มสิ่งนี้ในคำถาม
Score:1
ธง in

มันจะปลอดภัยกว่าที่จะแปลงไฟล์ วันที่ สตริงการประทับเวลา:

%s วินาทีตั้งแต่ 1970-01-01 00:00:00 UTC

[[ $(วันที่ +%s -d "$sub_time") -ge $(วันที่ +%s -d "$current_time") ]]

แน่นอน คุณสามารถทำได้โดยตรงเมื่อสร้างตัวแปร:

sub_time=$(วันที่ -d"${tag} +1:00" +%s)
current_time=$(วันที่ +%s)
ถ้า [[ $subtime -ge $current_time ]]; แล้ว
   ...
ไฟ

  • แทนที่จะสร้าง ปัจจุบัน_เวลา ด้วยตัวเอง คุณสามารถใช้ตัวแปรทุบตี $EPOCHSECONDS (ทุบตี > 5.0).
  • คุณสามารถใช้ พิมพ์ฉ แทน วันที่ เพื่อสร้าง: printf -v current_time '%(%s)T'

โปรดทราบว่าตัวเลือกเหล่านี้อาจไม่สามารถพกพาได้มากนัก

Haridvpsk avatar
us flag
azureuser@puppetclient-ubuntu:~$ echo $current_time "1632388663" azureuser@puppetclient-ubuntu:~$ echo $sub_time 1632384000 เงื่อนไขอื่นกำลังดำเนินการ ทำไม.?
Score:0
ธง li
#!/bin/bash
tag=$(awk -F, 'NR==1{print $1}' /tmp/time.txt)# เอาต์พุต: 17:00 น.
sub_time=$(date -d"${tag} +1:00" +'%H:%M')#output: 16:00 น.
current_time=$(วันที่ |awk 'NR==1{print substr($5,0,5)}')#output: 05:51
# ในระบบของฉัน ฟิลด์ที่ 5 มีเวลาในขณะที่ฟิลด์ที่ 4 มีปี
#ดังนั้นฉันจึงเปลี่ยนเป็น awk
ถ้า [[ "$sub_time" > "$current_time" ]];แล้ว # การเปรียบเทียบทำพจนานุกรม
   crontab <<EOF
   */15 * * * * ทุบตี server_shutdown.sh
อฟ
ไฟ
pLumo avatar
in flag
แทนที่จะกรองเอาต์พุต `date` ด้วย `awk` ทำไมไม่ใช้แค่ `date +%H:%M` ล่ะ
Haridvpsk avatar
us flag
หลังจากที่เงื่อนไขได้รับความพึงพอใจแล้วงาน cron ของฉันก็ไม่ถูกสร้างขึ้น ทำไม?
Haridvpsk avatar
us flag
ขอบคุณมาก Mr.PLumo & Mahek ทั้งสองคำตอบใช้ได้สำหรับฉัน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา