Shell Script cho ngày hôm qua


16

Tôi đang cố gắng thực thi shellscript sau với ứng dụng hazel trên bất kỳ tệp nào trong thư mục. Nó hoạt động, nhưng điều duy nhất gây ra vấn đề là ngày hôm qua.

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

Bất cứ ý tưởng tại sao nó không hoạt động?

Câu trả lời:


30

Hãy thử sử dụng ngày như thế này:

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

như đã đề cập yesterdaylà một phần của Ngày GNU, nhưng sử dụng độ lệch -1d sẽ tương đương với việc sử dụng OS X.


3

Tiện ích ngày đi kèm với OS X không phải là ngày GNU (chấp nhận --datetùy chọn).

Bạn có thể sử dụng homebrew để cài đặt nó.

Bạn có thể có thể sử dụng Perl để có được những gì bạn muốn:

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)'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.