Sebagai contoh, $PATH
dan$HOME
Ketika saya mengetiknya echo $PATH
mengembalikan saya $PATH
, tetapi saya ingin menggemakan kata $PATH
dan bukan apa variabel sebenarnya singkatan, echo "$PATH"
tidak berfungsi baik.
Sebagai contoh, $PATH
dan$HOME
Ketika saya mengetiknya echo $PATH
mengembalikan saya $PATH
, tetapi saya ingin menggemakan kata $PATH
dan bukan apa variabel sebenarnya singkatan, echo "$PATH"
tidak berfungsi baik.
Jawaban:
Anda hanya perlu keluar dari dolar $
:
echo \$PATH
$PATH
Atau kelilingi dengan tanda kutip tunggal:
echo '$PATH'
$PATH
Ini akan memastikan kata tersebut tidak ditafsirkan oleh shell.
echo -e
halaman manual.
-e
flag digunakan untuk memperluas, misalnya, \t
untuk karakter tab literal. Tidak ada hubungannya dengan keluar dari tanda dolar untuk mencegah ekspansi parameter.
echo '\$PATH' >> output.txt
menghasilkan "/ usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / game: / usr / local / games: / opt / vc / bin" ditulis ke file , bukan "$ PATH".
echo '\044*' > first.txt
itu akan menampilkan $ * di first.txt
$
dalam sintaksis kebanyakan shell adalah karakter yang sangat istimewa. Jika kita hanya melihat kerang mirip Bourne, ia digunakan untuk memperkenalkan:
$#
, $var
,${foo:-bar}
$(logname)
(juga ${ logname;}
di beberapa shell untuk menghindari subshell)$((1+1))
(juga $[1+1]
di beberapa kerang).$'\n'
atau $"localized string"
.Kecuali untuk kasus terakhir, ekspansi / penggantian tersebut masih terjadi di dalam tanda kutip ganda (dan di $"..."
dalam bash
atau ksh93
)
Untuk menghentikannya agar $
tidak diperlakukan secara khusus, Anda perlu mengutipnya dengan:
echo '$PATH'
atau echo '$'PATH
. Yang Anda umumnya ingin digunakan karena lolos dari semua karakter (kecuali dirinya sendiri) di sebagian besar shell.echo \$PATH
. Juga di dalam tanda kutip ganda:echo "\$PATH"
echo $'$PATH'
, echo $'\44PATH'
(dengan asumsi charset kompatibel ASCII),echo $'\u0024'
Atau pastikan itu bukan bagian dari bentuk ekspansi yang valid seperti yang tercantum di atas:
echo "$"PATH
echo $""PATH
,echo $"PATH"
ksh93
dan bash
mendukung $"..."
bentuk kutipan.echo $``PATH
. Tidak ada alasan mengapa Anda ingin menggunakan yang itu kecuali untuk menunjukkan bahwa itu mungkin.echo "${$+$}PATH"
dan yang berbelit-belit lainnya ...Atau Anda bisa menampilkannya $
dengan cara lain:
echo
: echo '\044PATH'
(beberapa echo
kebutuhan lain echo -e '\044PATH'
)printf '\44PATH\n'
kucing << \ EOF $ PATH EOF
Perhatikan bagaimana backslash tersebut perlu dikutip karena mereka juga spesial untuk shell.
Mudah-mudahan sudah jelas sekarang bahwa meskipun ada banyak cara untuk melakukannya, tidak ada alasan bagus Anda ingin menggunakan hal lain selain di echo '$PATH'
sini.
Perhatikan bahwa $ double dalam tanda kutip ganda bisa menjadi masalah. Ini dapat dilakukan dengan menghasilkan $ di luar tanda kutip ganda, seperti ini:
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'
KELUARAN:
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"
seperti yang sudah dijelaskan pada jawaban lain. Atau printf '%s is the value of $term\n' "$term"
sebagai gantinya orang tidak boleh menggunakan echo
data yang sewenang-wenang.
Menggunakan:
echo ''\$PATH'' >> output.txt
Ini akan bekerja
ec""h'''o''' ''""''\$P''A""TH''
echo '$PATH'
. untuk informasi lebih lanjut tentang penawaran, kunjungi ini dan ini