Сценарій оболонки для вчорашнього побачення


16

Я намагаюся виконати наступний оболонку з додатком лішника на будь-якому файлі в папці. Це працює, але єдине, що викликає проблему, - це дата вчора.

#! /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, але використання зміщення -1d повинно бути еквівалентним для використання в OS X.


3

Утиліта дати в комплекті з OS X не є датою GNU (що приймає цю --dateопцію).

Ви можете використовувати домашню мову для її встановлення.

Напевно, ви можете використовувати 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)'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.