Tôi sử dụng ZSH cho trình bao terminal của mình, và trong khi tôi đã viết một số hàm để tự động hóa các tác vụ cụ thể, tôi chưa bao giờ thực sự thử bất cứ thứ gì yêu cầu chức năng tôi đang làm.ZSH/Shell biến/sử dụng biến
Gần đây tôi đã viết lại một blog bằng Jekyll và tôi muốn tự động hóa việc sản xuất các bài đăng trên blog và cuối cùng là tải lên các tệp mới được tạo lên máy chủ của tôi bằng cách sử dụng một cái gì đó như scp.
Tôi hơi bối rối về các ràng buộc/sử dụng biến trong ZSH; ví dụ:
DATE= date +'20%y-%m-%d'
echo $DATE
kết quả đầu ra chính xác 2011-08-23 như tôi mong đợi.
Nhưng khi tôi thử:
DATE= date +'20%y-%m-%d'
FILE= "~/path/to/_posts/$DATE-$1.markdown"
echo $FILE
Nó ra:
2011-08-23
blog.sh: line 4: ~/path/to/_posts/-.markdown: No such file or directory
Và khi chạy với những gì tôi muốn được muốn tiêu đề blog để được (bất chấp sự thật chuỗi cần phải được được điều chỉnh để làm cho url thân thiện hơn và đường dẫn/đường dẫn không tồn tại)
tức là blog "tiêu đề blog", kết quả đầu ra:
2011-08-23
blog.sh: line 4: ~/path/to/_posts/-blog title.markdown: No such file or directory
Tại sao in $ DATE phía trên lệnh gọi để in $ FILE thay vì chuỗi được đưa vào $ FILE?
'date +% Y-% m-% d' là sạch hơn 'date + 20% y-% m-% d'. 'date +% F' thậm chí còn sạch hơn. (Điều này giả sử lệnh 'date' của bạn hỗ trợ các định dạng này; ngày GNU thực hiện, nhưng những người khác có thể không.) –