GNU/Linux >> Belajar Linux >  >> Linux

Mengapa The Tilde (~) Tidak Memperluas Di Dalam Kutipan Ganda?

Menurut jawaban ini dan pemahaman saya sendiri, tilde diperluas ke direktori home:

$ echo ~
/home/braiam

Sekarang, setiap kali saya ingin ekspansi Shell berfungsi, mis. e. menggunakan nama variabel seperti $FOO , dan jangan merusak karakter yang tidak diharapkan, spasi, dll. seseorang harus menggunakan tanda kutip ganda " :

$ FOO="some string with spaces"
$ BAR="echo $FOO"
$ echo $BAR
echo some string with spaces

Mengapa ekspansi ini tidak berfungsi dengan tilde?

$ echo ~/some/path
/home/braiam/some/path
$ echo "~/some/path"
~/some/path

Jawaban yang Diterima:

Alasannya, karena di dalam tanda kutip ganda, tilde ~ tidak memiliki arti khusus, itu diperlakukan sebagai literal.

POSIX mendefinisikan Kutipan Ganda sebagai:

Mengapit karakter dalam tanda kutip ganda ( “”) akan mempertahankan
nilai literal semua karakter dalam tanda kutip ganda, dengan
pengecualian karakter tanda dolar, tanda kutip balik, dan garis miring terbalik,

Aplikasi harus memastikan bahwa tanda kutip ganda didahului dengan
garis miring terbalik untuk disertakan dalam tanda kutip ganda. Parameter '@' memiliki
arti khusus di dalam tanda kutip ganda

Kecuali $ , ` , dan @ , karakter lain diperlakukan sebagai literal di dalam tanda kutip ganda.


Linux
  1. Mengapa Server Memblokir IP Saya?

  2. Mengapa Pc Tidak Memutar Dvd??

  3. cara menghapus tanda kutip ganda di csv

  1. Mengapa Skrip Bash Tidak Mengenal Alias?

  2. Mengapa Halaman Man Unix Menggunakan Double Backticks Di Tempat Dari Kutipan Ganda?

  3. Mengapa ~/.bash_profile Tidak Berfungsi?

  1. Wildcard Di Dalam Kutipan?

  2. Mengapa "Sudo Su" Dalam Skrip Shell Tidak Menjalankan Skrip Lainnya Sebagai Root?

  3. Apa Perbedaan Antara Titik Koma dan Ampersand Ganda &&?