Örneğin, $PATHve$HOME
Ben echo $PATHyazdığımda benim döndürür $PATH, ancak sözcüğü yankılamak istiyorum $PATHve asıl değişkenin ne anlama geldiğini echo "$PATH"değil, işe yaramaz.
Örneğin, $PATHve$HOME
Ben echo $PATHyazdığımda benim döndürür $PATH, ancak sözcüğü yankılamak istiyorum $PATHve asıl değişkenin ne anlama geldiğini echo "$PATH"değil, işe yaramaz.
Yanıtlar:
Sadece dolardan kaçman gerekiyor $.
echo \$PATH
$PATH
Veya tek tırnakla çevreleyin:
echo '$PATH'
$PATH
Bu, kelimenin kabuk tarafından yorumlanmamasını sağlayacaktır.
echo -eadam sayfasında hiçbir şey söylemedi .
-eBayrak, örneğin, genişletmek için kullanılan \tbir hazır sekme karakteri. Parametre genişlemesini önlemek için dolar işaretinden çıkmak ile ilgisi yoktur.
echo '\$PATH' >> output.txt"/ usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games: / opt / vc / bin" sonuçlarının dosyaya yazılması , "$ PATH" değil.
echo '\044*' > first.txtfirst.txt $ * çıktısını çalıştı çalıştı
$Çoğu kabuğun sözdiziminde çok özel bir karakterdir. Sadece Bourne benzeri mermilere bakarsak, tanıtmak için kullanılır:
$#, $var,${foo:-bar}$(logname)( ${ logname;}alt kabuğu önlemek için bazı kabukları da )$((1+1))(ayrıca $[1+1]bazı kabuklarda).$'\n'veya gibi bazı kabuklarda diğer alıntı biçimleri $"localized string".Geçen örneğin dışında, bu açılımları / değişimler hala çift tırnak içinde geçmesi (ve iç $"..."bölgesi bashveya ksh93)
$Özel muamele görmesini engellemek için ikisinden birini de alıntılamanız gerekir:
echo '$PATH'veya echo '$'PATH. Genel olarak, çoğu kabuktaki tüm karakterlerden (kendisi hariç) kaçarken kullanmak istediğinizi.echo \$PATH. Ayrıca çift tırnak içinde:echo "\$PATH"echo $'$PATH', echo $'\44PATH'(ASCII uyumlu karakter kümesini varsayılarak),echo $'\u0024'Veya yukarıda listelenen geçerli bir genişleme biçiminin parçası olmadığından emin olun:
echo "$"PATHecho $""PATH,echo $"PATH"ksh93ve bashdestekler $"...".echo $``PATH. Bunun mümkün olduğunu göstermek dışında neden kullanmak istediğinin bir nedeni yok.echo "${$+$}PATH" ve diğer kıvrımlı olanlar ...Ya da $başka bir şekilde çıktı alabilirsiniz :
echo: echo '\044PATH'(başkalarının echoihtiyacı var echo -e '\044PATH')printf '\44PATH\n'kedi << \ EOF $ PATH EOF
Bu ters eğik çizgilerin, kabuk için de özel oldukları için nasıl alıntı yapılması gerektiğine dikkat edin.
Umarım bunu netleştirmek gerekir, bunu yapmak için birçok yol olmasına rağmen, echo '$PATH'burada başka bir şey kullanmak istemeniz için iyi bir neden yoktur .
Kelimenin tam anlamıyla $ içindeki çift tırnak işaretleri sorun olabileceğini unutmayın. $ Dışında çift tırnak işareti üretilerek yapılabilir:
echo "My terminal is $term, first file found in /dev is </dev/`ls /dev | head -n 1`>, the
dollar symbol is '"`echo '$'`"', and a newspaper costs "`echo '$'`"2.50."
or like this:
echo "$term is the value of "'$term'
ÇIKTI:
My terminal is xterm, first file found in /dev is </dev/acpi>, the dollar symbol
is '$', and a newspaper costs $2.50.
xterm is the value of $term
echo "$term is the value of \$term"daha önce başka bir cevapta açıklandığı gibi. Ya printf '%s is the value of $term\n' "$term"da zaten bir kişi echokeyfi veriler için kullanmamalı .
kullanın:
echo ''\$PATH'' >> output.txt
Bu çalışacak.
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'. alıntı hakkında daha fazla bilgi için, bu ve bu