Yalnızca minimum bir değişikliğe ihtiyacınız var; buradaki belge sınırlayıcısını tek tırnak içine alın <<
.
cat <<'EOF' >> brightup.sh
veya eşdeğer olarak ters eğik çizgiden kaçının:
cat <<\EOF >>brightup.sh
Alıntı yapmadan, buradaki belge değişken ikameye uğrayacak, ters işaretler değerlendirilecek, vb. Sizin keşfettiğiniz gibi.
Değerlerin tümünü olmasa da bazılarını genişletmeniz gerekiyorsa, önlemek istediklerinizden ayrı ayrı kaçmanız gerekir.
cat <<EOF >>brightup.sh
echo "\$HOME will not be evaluated because it is backslash-escaped"
EOF
üretecek
#!/bin/sh
echo "$HOME will not be evaluated because it is backslash-escaped"
@Fedorqui tarafından önerildiği gibi , şuradaki ilgili bölüm man bash
:
İşte Belgeler
Bu tür yeniden yönlendirme, kabuğa, yalnızca sınırlayıcı içeren (sonda boşluklar olmadan) bir satır görünene kadar mevcut kaynaktan gelen girişi okumasını söyler. O noktaya kadar okunan tüm satırlar daha sonra bir komut için standart girdi olarak kullanılır.
Buradaki belgelerin biçimi şöyledir:
<<[-]word
here-document
delimiter
Word üzerinde hiçbir parametre genişletmesi, komut ikamesi, aritmetik genişletme veya yol adı genişletmesi gerçekleştirilmez. Sözcükteki herhangi bir karakter tırnak içine alınmışsa, sınırlayıcı sözcük üzerindeki alıntı kaldırmanın sonucudur ve buradaki-belgedeki satırlar genişletilmez. Sözcük tırnaksız ise, buradaki belgenin tüm satırları parametre yorumlamasına, komut ikamesine ve aritmetik genişletmeye tabidir . İkinci durumda, \ karakter dizisi göz ardı edilir ve \, $ ve `karakterlerini alıntılamak için \ kullanılmalıdır.
#!/bin/bash
ve başka bir şey olmaması gerekir -#!
onu geçerli bir shebang satırına dönüştüren şeydir ve ondan sonra gelen, tercümana giden yoldur.