Tôi muốn làm một cái gì đó như thế này:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Có ý kiến gì không?
Tôi muốn làm một cái gì đó như thế này:
$ NAME=John
$ cat << '==end' > test
My name is $NAME
==end
$ cat test
My name is John
Có ý kiến gì không?
Câu trả lời:
cat <<EOF > test
My name is $NAME
EOF
hoặc thậm chí
cat <<==end > test
My name is $NAME
==end
Đã làm cho tôi.
Trông giống như khi bạn đi ==end
trong '
biến không thay thế.
à, đây là trang nam (xem 3.6.6):
Định dạng của tài liệu ở đây là:
<<[-]word here-document delimiter
Không có mở rộng tham số, thay thế lệnh, mở rộng số học hoặc mở rộng tên đường dẫn được thực hiện trên word . Nếu bất kỳ ký tự nào trong từ được trích dẫn, dấu phân cách là kết quả của việc loại bỏ trích dẫn trên từ và các dòng trong tài liệu ở đây không được mở rộng. Nếu từ không được trích dẫn, tất cả các dòng của tài liệu ở đây phải chịu sự mở rộng tham số, thay thế lệnh và mở rộng số học. [...]
cat << "==end" > test
), nhưng trích dẫn cứng ngăn chặn sự thay thế thực sự.