Shell-Skript für das gestrige Datum

16

Ich versuche, das folgende Shellscript mit der Hasel-App für eine beliebige Datei im Ordner auszuführen. Es funktioniert, aber das einzige, was ein Problem verursacht, ist das Datum für gestern.

#! /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

Irgendwelche Ideen, warum es nicht funktioniert?

Joe Bobby
quelle

Antworten:

30

Versuchen Sie, ein Datum wie das folgende zu verwenden:

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

wie erwähnt yesterdayist ein Teil von GNU Date, aber die Verwendung eines Offsets von -1d sollte für OS X gleichbedeutend sein.

l'l'l
quelle
3

Das mit OS X mitgelieferte Dienstprogramm date ist kein GNU-Datum (das die --dateOption akzeptiert ).

Sie können Homebrew verwenden , um es zu installieren.

Sie können wahrscheinlich Perl verwenden, um das zu bekommen, was Sie wollen:

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)'
Glenn Jackman
quelle