Score:0

การใช้เครื่องหมายคำพูดในตัวแปรของงาน crontab

ธง us

ฉันกำลังพยายามรับวันที่ที่ผ่านมาในงาน cron โดยใช้สิ่งนี้ แต่ วันที่ ตัวแปรจะว่างเปล่าเสมอ

DATE=วันที่ -d "$วันที่ -1 วัน -1 เดือน" +%Y-%m
* * * * * /bin/echo "วันที่: $($DATE) ทดสอบ" >> /tmp/crontab.log 2>&1

ฉันรู้ว่า crontab ยุ่งยากแค่ไหนต้องขอบคุณ คำถามนี้ ด้วยคำตอบที่ดี แต่ปัญหาที่นี่ดูเหมือนจะไม่ใช่ % ลงชื่อ เนื่องจากรหัสด้านบนใช้งานได้ดี:

DATE=วันที่ -d @2147483647 +%Y-%m
* * * * * /bin/echo "วันที่: $($DATE) ทดสอบ" >> /tmp/crontab.log 2>&1

แต่ถ้าผมใช้ quotes แล้วงานกลับไม่ได้วันที่

DATE=วันที่ -d"@2147483647" +%Y-%m
* * * * * /bin/echo "วันที่: $($DATE) ทดสอบ" >> /tmp/crontab.log 2>&1

ฉันพยายามแทนที่เครื่องหมายคำพูดด้วยเครื่องหมายคำพูดเดี่ยว เครื่องหมายคำพูดคู่ การหลีกเลี่ยงเครื่องหมายคำพูด แต่ไม่มีตัวเลือกใดที่แก้ปัญหาได้ และฉันต้องการใบเสนอราคาเพื่อระบุ "$วันที่ -1 วัน -1 เดือน" ส่วนหนึ่ง. มีวิธีการทำเช่นนี้ใน crontab โดยไม่ต้องสร้างสคริปต์ภายนอกหรือไม่?

CentOS 7 และ crontab (cronie-1.4.11-23.el7.x86_64)

Score:0
ธง jp

ประเด็นนี้ไม่มีอะไรเกี่ยวข้องกับ ครอน แต่มีการขยายตัวแปรภายใน $(). เดอะ วันที่ คำสั่งที่เรียกใช้ในเชลล์ย่อย $() ไม่เห็นพารามิเตอร์ -d "$ วันที่ -1 วัน -1 เดือน" แต่มีหลายพารามิเตอร์แทน: -d "วันที่ $ -1 วัน -1 เดือน. คุณอาจต้องการใช้ $(เท่ากับ $DATE) แทน.

โพสต์คำตอบ

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