2012-03-06 25 views
18

Trong tập lệnh bash, làm cách nào để sử dụng biến để tạo tệp nén được đặt tên cụ thể? Ví dụ, tôi muốn làm một cái gì đó như:nhận biến bash vào tên tệp cho lệnh zip

VERSION_STRING='1.7.3' 
zip -r foo.$VERSION_STRING foo 

Nơi tôi lý tưởng kết thúc với một tập tin gọi foo.1.7.3.zip

Nó có vẻ như tôi đang gặp 2 vấn đề:

  1. zip lệnh đang xử lý $VERSION_STRING giống như không có hoặc trống rỗng
  2. . sau foo cũng dường như đang nhổ nó lên

Trả lời

8

Các công việc sau tốt ở đây sử dụng bash 4.1.5:

#!/bin/bash 

VERSION_STRING='1.7.3' 
echo zip -r foo foo.$VERSION_STRING.zip 

Tôi đã thêm echo để xem lệnh thực tế chứ không phải là chạy nó. Kịch bản in ra

zip -r foo foo.1.7.3.zip 
+0

cảm ơn, echo-ing ra lệnh cho tôi thấy rằng biến của tôi có một không gian trong đó, đó là rối tung lên việc tạo zip. –

20

bạn có thể sử dụng ${VERSION_STRING} quấn rõ tên biến của bạn

8

Tôi nghĩ rằng bạn có đầu vào zip của bạn về phía sau. Đối với tôi lệnh sau:

zip -r foo.${VERSION_STRING}.zip foo 

tạo tệp zip hợp lệ. Lệnh của bạn không (ít nhất là với phiên bản zip của tôi).

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