Yukarıdakilerin tümü işe yarar, ancak aynı zamanda ilk etapta meydana gelmesi gerekmeyen bir problemi (kaçışlar ve özel karakterler) aşmak zorundadır: Değişken kabuk tarafından genişletildiğinde özel karakterler. Sadece bunu (değişken genişleme) ilk etapta yapmayın. Değişkeni genişletmeden doğrudan kullanın.
Ayrıca, değişkeniniz bir sır içeriyorsa ve bu sırrı bir dosyaya kopyalamak istiyorsanız, kabuk komutlarının izleme / komut yankısı sırrı açığa çıkarabileceği için komut satırında genişletme olmasını istemeyebilirsiniz. Yani, $varkomut satırında kullanılan tüm yanıtlar , değişken içerikleri kabuğun izlenmesine ve günlüğe kaydedilmesine maruz bırakarak potansiyel bir güvenlik riskine sahip olabilir.
Bunu kullan:
printenv var >file
Bu, OP sorusu durumunda:
printenv var >"$destfile"