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
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.
Nasıl bir BASH değişken bir komut çıkt...
Nasıl bir WordPress kullanmak küresel ...
Nasıl Clojure içinde işlev bağımsız de...
Nasıl bash script bayrakları ile değiş...
Nasıl bir Bash komut bir değişken stan...