2010-03-10 37 views
59

Tôi đang tạo tập lệnh để tự động hóa việc tạo các máy chủ ảo apache. Một phần của tập lệnh của tôi như sau:Làm cách nào để giữ nguyên dòng mới trong chuỗi được trích dẫn trong Bash?

MYSTRING="<VirtualHost *:80> 

ServerName $NEWVHOST 
DocumentRoot /var/www/hosts/$NEWVHOST 

... 

" 
echo $MYSTRING 

Tuy nhiên, ngắt dòng trong tập lệnh đang bị bỏ qua. Nếu tôi echo chuỗi, được spat ra như là một dòng.

Làm cách nào để đảm bảo rằng ngắt dòng được in?

Trả lời

133

Thêm dấu ngoặc kép để làm cho nó hoạt:

echo "$MYSTRING" 

Nhìn vào nó theo cách này:

MYSTRING="line-1 
line-2 
line3" 

echo $MYSTRING 

này sẽ được thực hiện như sau:

echo line-1 \ 
line-2 \ 
line-3 

tức echo với ba thông số, in từng thông số với khoảng cách giữa chúng.

Nếu bạn thêm dấu ngoặc kép quanh $MYSTRING, lệnh kết quả sẽ là:

echo "line-1 
line-2 
line-3" 

ví dụ echo với một tham số chuỗi duy nhất trong đó có ba dòng văn bản và hai ngắt dòng.

+0

Cảm ơn :) Tôi tìm thấy trích dẫn trong đôi khi khá bối rối. Điều này có ích. –

+3

+1 - giải thích tốt đẹp –

+5

+1 - 14 tháng sau, bởi vì đó chỉ là hit google tôi cần. – eaj

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