Çift tırnak içinde tek tırnak ve Bash referans kılavuzu


18

Çift Tırnaklar başlıklı bölüm 3.1.2.3'te Bash el kitabı şunları söylüyor:

Karakterleri çift tırnak içine almak ('"'), '$', '' ',' \ 've geçmiş genişletmesi etkinleştirildiğinde'! 'Hariç, tırnak içindeki tüm karakterlerin gerçek değerini korur.

Şu anda tek alıntı ( ') ile ilgileniyorum .

Önceki bölümde, bölüm 3.1.2.2'de açıklanan özel anlamı:

Karakterleri tek tırnak içine almak ( ') tırnak içindeki her karakterin gerçek değerini korur. Bir ters eğik çizgiden önce de olsa, tek tırnak işaretleri arasında tek bir tırnak işareti olmayabilir.

İki sergiyi birleştirerek,

 echo "'$a'"

burada değişken atanımlanmadıysa (dolayısıyla $a= null string), içinde özel bir anlamı olması nedeniyle, özel yorumdan koruyacağı $aiçin ekrana yazdırmalıdır . Bunun yerine yazdırır . Neden öyle?''$''

Yanıtlar:


21

Örneğinizdeki 'tek tırnak karakteri echo, çift tırnak işaretleri ( ") içine alındığında değişmez değeri alır (ve anlamını kaybeder ). Çevreleyen karakterler çift tırnaktır.

Yapabileceğiniz tek tırnakları ayrı ayrı yazdırmaktır:

echo "'"'$a'"'"

veya $:

echo "'\$a'"

Tamamen haklısın! Çıktı yanıtınızla tutarlı, ancak şüphem "Karakterleri çift tırnak içine almak ('"'), "$", " ’, ‘\’, and, when history expansion is enabled, ‘!’." in the manual. But now reading it again I realized the second character is not single quote, ("'") but tilde ("" hariç) tırnak içindeki tüm karakterlerin gerçek değerini korur . Hızlı cevabınız için minnettarız.Teşekkürler!
Lavya

2
Kılavuzda belirtilen ikinci karakter tilde değil backtick'tir.
Kenny Evitt

6

Belgeleri yanlış anlıyorsunuz:

içinde özel bir anlamı olması, $ özel yorumdan koruyacaktır

"Özel anlamı olmak" , kelimenin tam anlamıyla değil özel olarak yorumlanması anlamına gelir . Tek tırnak işaretleri $genişletilmesini önler . Ancak çift tırnak içindeki tek tırnaklar değişmez karakterlerdir, yani hiçbir şeyi etkilemezler. Çıktı istiyorsanız $ao zaman ihtiyacınız var echo '$a'.


Haklısın. Sadece belgeyi yanlış anlamadım, yanlış okudum. "çift tırnak içindeki tek tırnaklar değişmez karakterdir" konusunda haklısınız. Teşekkürler!
Lavya
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.