2009-12-07 26 views

Trả lời

19

bạn có thể sử dụng này:

LOGFILE=$(LOGPATH) `date +'%y.%m.%d %H:%M:%S'` 
+3

sẽ không gây ra logfile này để được evaulated mọi lúc nó được sử dụng. Ví dụ: logfile = log/'date +"% y% m% d-% H:..% M:% S'' echo_logs: echo $ (logfile) 5s ngủ echo $ ($ LOGFILE) sẽ in: bản ghi âm/'date + '% y.% M.% D-% H:% M:% S'' nhật ký/10.01.28-14: 21: 08 sleep 5s nhật ký echo/'date + '% y.% m.% d-% H:% M:% S'' nhật ký/10.01.28-14: 21: 13 – Aaron

+4

@Aaron: Bạn nói đúng; để tránh điều này có thể sử dụng gnu làm cho hàm 'shell' thay vì backticks:' LOGFILE = $ (LOGPATH) $ (shell date) ' – catwalk

+1

Đồng ý, và cho đầy đủ: LOGFILE = $ (LOGPATH) $ (shell date + '% Y .% m.% d-% H:% M:% S '). Cũng hoạt động trên Solaris. – anisbet

1

bạn có thể sử dụng "hẹn hò" lệnh

24

Bạn cần phải sử dụng $ (hoạt động vỏ) lệnh trong thực hiện. Nếu bạn sử dụng operation, thì lệnh trình bao sẽ được đánh giá mỗi lần. Nếu bạn đang viết vào một tệp nhật ký, bạn không muốn tên tệp nhật ký thay đổi mỗi khi bạn truy cập nó trong một lệnh tạo đơn.

LOGPATH = logs 
LOGFILE = $(LOGPATH)/$(shell date --iso=seconds) 

test_logfile: 
    echo $(LOGFILE) 
    sleep 2s 
    echo $(LOGFILE) 

Sản lượng này sẽ:

echo logs/2010-01-28T14:29:14-0800 
logs/2010-01-28T14:29:14-0800 
sleep 2s 
echo logs/2010-01-28T14:29:14-0800 
logs/2010-01-28T14:29:14-0800 
+2

Nhưng điều này không giống nhau trên các mục tiêu khác nhau. –

Các vấn đề liên quan