2010-10-13 34 views
16

yılında Çıkışsız dolar işareti içeren bir değişken echo, ben değişkenin tüm içeriğini yankı herhangi bir yolu var mı?Ben Çıkışsız dolar işareti içeren bir değişken varsa nasıl bash

./script.sh "test1$test2"

ve ben parametresini kullanmak istiyorsanız o zaman "kesik" şöyle olur: Tabii tek Of

echo ${1}
test1

örnek şey için

bir komut dosyası çağırır varabililebilir ismi alıntılamak yardımcı olmaz. Nasıl yazılacağını anlayamıyorum, böylece en azından dolandırıcı işareti parametreyi geri aldıktan sonra kendimden kaçabilirim. komut dosyası çalıştırılmadan

cevap

7

değişken değiştirilir.

./script.sh 'test1$test2' 
+0

Evet, bu dava :) Aslında ben dosyalardan veri okuyorum zaman gibi çıkış kullanılmamış dolar işareti, değişkenleri sahip olduğu gerçi diğer durumlar vardır – Not22

+0

gibi görünüyor. Komutumu bu veri ile çağırmak istiyorum, bu yüzden okumadan önce tüm dosyayı çöpe atmak için tek seçeneğim mi? – Not22

+1

Dosyalardan veri okumak değişken ikamesi yapmaz. –

28

problem, komut ilk etapta "test1" alır ve muhtemelen boş (edilmemiş) değişken bir referans olduğunu bilmek olamaz.

./script.sh "test1\$test2" 

Ya da böyle tek tırnak ' kullanın:: vaka bash o parametre dize değişkenleri genişlemez

./script.sh 'test1$test2' 

hangi Böyle, komut geçirmeden önce $ kaçmak zorunda .

0

Ignacio'nun size söylediği gibi, değişken değiştirilir, böylece komut dosyanız ve $1 değerleri olarak alınır.

Ancak, argümanı geçmek için hazır tırnak işaretleri kullanmış olsanız bile, echo "${1}" ürününüze her zaman "$1" kodunu yazınız. Bu iyi bir uygulama.

+0

Ve parantezler * gerekli değildir * çünkü bu basit bir ikamedir. –

+0

evet gerekli değil. Onları kullanmak sadece isteğe bağlıdır. – Benoit

4

tek tırnak kullanarak, $ gibi meta karakterler onun değişmez değerini koruyacaktır. Eğer çift tırnak kullanılırsa, değişken isimleri enterpolasyona uğrayacaktır.

İlgili konular