2012-09-17 39 views
15

Trong Bash (hoặc các trình bao khác) làm thế nào tôi có thể in một biến môi trường có giá trị nhiều dòng?In biến có giá trị nhiều dòng trong trình bao?

text='line1 
line2' 

Tôi biết đơn giản thông thường echo $text sẽ không hoạt động. Một số tinh chỉnh $ IFS có giúp được không?

Cách giải quyết hiện tại của tôi giống như ruby -e 'print ENV["text"]'. Điều này có thể được thực hiện trong vỏ tinh khiết không? Tôi đã tự hỏi nếu env lệnh sẽ mất một tên var chưa được giải quyết nhưng nó dường như không.

+0

Tại sao uốn cong ngược với backticks? Chỉ cần thực hiện 'text = 'line1 line2'' (do đó nhiệm vụ kéo dài hai dòng văn bản) hoặc' text = $' line1 \ nline2'' nếu bạn hài lòng với tính di động bị hạn chế. –

+1

với bash, cách để đưa văn bản đó vào một biến là 'text = $ 'line1 \ nline2'' –

+0

@WilliamPursell Tôi biết nó đơn giản hơn tôi đã thử heredoc trước nhưng điều đó không hiệu quả .. nhưng tất nhiên là chuỗi multiline đơn giản hơn .. nó chỉ là rất muộn để làm mới ký ức bash của tôi. cảm ơn. – inger

Trả lời

28

Cùng một giải pháp như mọi khi.

echo "$text" 
+1

xin lỗi, điều này khác với văn bản echo $ như thế nào? – inger

+3

Có dấu ngoặc kép, điều này ngăn cản việc tách từ trong bash. –

+0

Đó là cảm ơn! xin lỗi tôi đã không nhận ra vấn đề là từ khạc nhổ ở đây .. – inger

2
export TEST="A\nB\nC" 
echo $TEST 

cho đầu ra:

A\nB\nC 

nhưng:

echo -e $TEST 
A 
B 
C 

Vì vậy, câu trả lời dường như là tham số '-e' để vang, giả sử tôi hiểu câu hỏi của bạn một cách chính xác.

+2

Cảm ơn, đó là tốt đẹp thực sự .. Tuy nhiên trong kịch bản của tôi var có chứa một LF char chính hãng chứ không phải là trình tự thoát. Đang làm rõ câu hỏi ngay bây giờ. – inger

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