2013-12-10 13 views
24

Tôi muốn đặt biến số date-today thành ngày hiện tại và date_dir thành ngày hôm qua, cả ở định dạng yyyy-mm-dd.Làm cách nào để đặt biến thành ngày hiện tại và ngày-1 trong linux?

tôi đang làm điều này:

#!/bin/bash 
d=`date +%y%m%d%H%M%S` 
echo $d 
+1

Tôi đang bối rối như thế nào bạn quản lý để bị mắc kẹt tại điểm chính xác mà bạn đã làm. Bạn đã quản lý để truy xuất ngày bằng định dạng được chỉ định - nhưng không phải định dạng bạn muốn. Bạn đã quản lý để lưu đầu ra thành một biến - nhưng không phải biến mà bạn muốn. Làm thế nào bạn quản lý để viết mã dưới "Tôi đang làm điều này", và làm thế nào đến bạn không thể làm một chút công việc phụ của tinh chỉnh nó vào những gì bạn cần? – ruakh

+0

@ruakh: thực sự nó không phải là giải quyết biến $ d đó là lý do tại sao và tôi rất mới với kịch bản bash này –

+0

Kịch bản bạn đã đăng * không * in '$ d'. Điều gì làm cho bạn nói rằng nó không? – ruakh

Trả lời

45

Bạn có thể thử:

#!/bin/bash 
d=$(date +%Y-%m-%d) 
echo "$d" 

EDIT: Thay đổi y đến Y cho 4 ngày chữ số theo Nhận xét của QuantumFool.

+0

Trên thực tế, nếu năm được cho là dài bốn ký tự (tức là năm 2016), thì% Y sẽ được sử dụng thay cho% y (sẽ trả về 16 với 20 lần cắt) – QuantumFool

1

bạn nên man date đầu tiên

date +%Y-%m-%d 
date +%Y-%m-%d -d yesterday 
+0

tôi muốn đặt nó thành một biến làm thế nào để làm điều đó. tôi đang tạo một tập lệnh bash –

+0

tôi cũng muốn nói với bạn rằng đó là chọn ngày +% Y-% m-% d 'ngày 2013-12-09' +% Y-% m-% d -d hôm qua đang chọn '2013-12-09' –

2

đơn giản:

today="$(date '+%Y-%m-%d')" 
yesterday="$(date -d yesterday '+%Y-%m-%d')" 
2

Bạn cũng có thể sử dụng định dạng ngắn

Từ trang người đàn ông:

%F  full date; same as %Y-%m-%d 

Ví dụ:

#!/bin/bash 
date_today=$(date +%F) 
date_dir=$(date +%F -d yesterday) 
Các vấn đề liên quan