Shell Script สำหรับวันที่เมื่อวาน


16

ฉันพยายามที่จะดำเนินการ shellscript ต่อไปนี้ด้วยแอพสีน้ำตาลแดงในไฟล์ใด ๆ ในโฟลเดอร์ มันใช้งานได้ แต่สิ่งเดียวที่ทำให้เกิดปัญหาคือวันที่เมื่อวาน

#! /bin/bash

saveDir="TJ"
dd=$(date --date='yesterday' +'%m-%d-%Y')
for file in *.csv ; do
    saveName="${saveDir}/TJ ${dd}.csv"
    cut -d',' -f2,14 "$file" > "$saveName"
done

ความคิดใด ๆ ว่าทำไมมันไม่ทำงาน?

คำตอบ:


31

ลองใช้วันที่แบบนี้:

dd=$(date -v -1d '+%m-%d-%y')

ดังที่กล่าวไว้yesterdayเป็นส่วนหนึ่งของ GNU Date แต่การใช้ offset ของ -1d ควรเทียบเท่ากับการใช้ OS X


3

ยูทิลิตี้วันที่ที่มาพร้อมกับ OS X ไม่ใช่วันที่ของ GNU (ซึ่งยอมรับ--dateตัวเลือก)

คุณสามารถใช้homebrewเพื่อติดตั้ง

คุณอาจใช้ Perl เพื่อรับสิ่งที่คุณต้องการ:

perl -MPOSIX=strftime -le 'print strftime("%d-%m-%Y",localtime(time()-86400))'
# or
perl -MTime::Piece -MTime::Seconds -le 'print((Time::Piece->new - ONE_DAY)->dmy)'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.