Örneğin, $PATH
ve$HOME
Ben echo $PATH
yazdığımda benim döndürür $PATH
, ancak sözcüğü yankılamak istiyorum $PATH
ve asıl değişkenin ne anlama geldiğini echo "$PATH"
değil, işe yaramaz.
Örneğin, $PATH
ve$HOME
Ben echo $PATH
yazdığımda benim döndürür $PATH
, ancak sözcüğü yankılamak istiyorum $PATH
ve 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 -e
adam sayfasında hiçbir şey söylemedi .
-e
Bayrak, örneğin, genişletmek için kullanılan \t
bir 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.txt
first.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 bash
veya 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 "$"PATH
echo $""PATH
,echo $"PATH"
ksh93
ve bash
destekler $"..."
.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 echo
ihtiyacı 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 echo
keyfi 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