SORU
22 Temmuz 2009, ÇARŞAMBA


Nasıl Bash bir değişken için heredoc bir değer atamak?

Çok satırlı bu dize (tırnak işaretleri dahil)

abc'asdf"
$(dont-execute-this)
foo"bar"''

Nasıl bir değişken Bash bir heredoc kullanarak atayın ki?

Yeni satır korur gerekiyor.

Can sıkıcı olacağını dize karakterleri, kaçmak istemiyorum...

CEVAP
31 EKİM 2009, CUMARTESİ


cat işe yaramaz bir kaçının ve eşleşmeyen tırnak daha iyi Bu ile işleyebilir:

$ read -r -d '' VAR <<'EOF'
abc'asdf"
$(dont-execute-this)
foo"bar"''
EOF

Eğer echo zaman değişken alıntı yok eğer doğru değilse, yeni satır kaybolur. Onları korur alıntı:

$ echo "$VAR"
abc'asdf"
$(dont-execute-this)
foo"bar"''

Eğer kaynak kodu okunabilir olması için girinti kullanmak istiyorsanız, daha az-şu anda, sonra bir tire kullanın. Girinti yapmış sadece sekmeler (boşluk) kullanarak olmalıdır.

$ read -r -d '' VAR <<-'EOF'
    abc'asdf"
    $(dont-execute-this)
    foo"bar"''
    EOF
$ echo "$VAR"
abc'asdf"
$(dont-execute-this)
foo"bar"''

Bunun yerine, ortaya çıkan değişken içeriğini sekmeleri korumak istiyorsanız, IFS sekmesinden kaldırmak gerekir. Burada doktor, (EOF) için terminal marker girintili olmamalıdır.

$ IFS='' read -r -d '' VAR <<'EOF'
    abc'asdf"
    $(dont-execute-this)
    foo"bar"''
EOF
$ echo "$VAR"
    abc'asdf"
    $(dont-execute-this)
    foo"bar"''

SEKME tuşuna basarak komut satırına eklenebilirCtrl-VTab. Eğer bir editör, hangi bağlı olarak kullanıyorsanız, bu da otomatik olarak boşluk için sekmeleri dönüştüren özelliği devre dışı bırakmak zorunda kalabilirsiniz ya da iş olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • george sarintzotis

    george sarin

    2 Aralık 2007
  • KendrickLamarVEVO

    KendrickLama

    9 ŞUBAT 2011
  • sWooZie

    sWooZie

    9 ŞUBAT 2006