2012-04-01 26 views
8

Kabul ediyorum ki, ben bir bash neophyte. Kabuk komut dosyalarım için her zaman Python'a ulaşmak istiyorum. Ancak, bazı bash öğrenmek için kendimi zorlamaya çalışıyorum. Aşağıdaki kodun neden çalışmadığını merak ediyorum.Inline bash script değişkenleri

sh -c "F=\"123\"; echo $F" 

cevap

13

çift tırnaklar değişken genişleme komutu denir önce olur çünkü çalışmıyor. aslında yankı komutunu çağırmadan önce

echo "/home/lars" 

:

echo "$HOME" 

kabuk dönüştürmektedir: Ben yazarsanız vardır. Benzer şekilde, eğer yazın:

sh -c "F=\"123\"; echo $F" 

Bu dönüşmüş olur:

sh -c "F=\"123\"; echo" 

bir sh komutu çağırmadan önce. Ayrıca ters eğik çizgi $ kaçabilir

sh -c 'F="123"; echo $F' 

: Örneğin, değişken genişleme inhibe tek tırnak kullanabilirsiniz Eğer `bash` öğrenmeye çalışıyorsanız

sh -c "F=\"123\"; echo \$F" 
+0

Ayrıca, harcama bash' man sayfası ve [#bash faq] (http://mywiki.wooledge.org/BashFAQ) ile bazı kaliteli zaman. – larsks

+0

Ayrıca, tek tırnaklı sokağında, tırnak işaretlerini ters çevirmek için gerekli olmadığına dikkat edin: 'F =" 123 \ "'yerine" F = "123"' '. – larsks

+0

Teşekkürler! Tam anlam ifade eder. Büyük bir fark yaratan küçük detaylar. :-) – Daniel

İlgili konular