Tôi có chuỗi nhiều dòng này (bao gồm cả trích dẫn):
abc'asdf"
$(dont-execute-this)
foo"bar"''
Làm thế nào tôi có thể gán nó cho một biến bằng cách sử dụng một di truyền trong Bash?
Tôi cần phải bảo tồn các dòng mới.
Tôi không muốn thoát khỏi các ký tự trong chuỗi, điều đó sẽ gây phiền nhiễu ...
"EOF"
, nếu được gọi qua eval $VAR
, sẽ khiến tất cả phần còn lại của tập lệnh được nhận xét, vì ở đây $ VAR sẽ được xem là một dòng duy nhất ; để có thể sử dụng các #
bình luận bash trong tập lệnh multiline, trích dẫn kép cũng biến trong eval call:
eval "$ VAR" `.
eval
phương pháp này, nhưng không theo dõi được vì đây là một phần của gói có eval
một số biến được định nghĩa trong tệp cấu hình của nó. Thông báo lỗi là : /usr/lib/network/network: eval: line 153: syntax error: unexpected end of file
. Tôi chỉ chuyển sang một giải pháp khác.
'EOF'
, với các ngắt dòng đã thoát với` in the content: if the second line has
lệnh cd`, tôi nhận lại: " .sh: line X: cd: lệnh không tìm thấy "; nhưng nếu tôi trích dẫn đôi"EOF"
; sau đó các biến bash${A}
không được bảo toàn dưới dạng chuỗi (chúng được mở rộng); nhưng sau đó, ngắt dòng được giữ nguyên - và, tôi không gặp vấn đề gì khi chạy lệnh vớicd
dòng thứ hai ( và cả 'EOF' và "EOF" dường như cũng hoạt động tốt vớieval
việc chạy một tập lệnh được lưu trữ trong một biến chuỗi ). Chúc mừng!