Saya membaca tutorial shell hari ini dari http://www.tutorialspoint.com/unix/unix-quoting-mechanisms.htm
Di mana disebutkan:
Jika kutipan tunggal muncul dalam string untuk menjadi output, Anda tidak harus menempatkan seluruh string dalam kutipan tunggal, Anda harus terlebih dahulu menggunakan backslash () sebagai berikut:
echo 'It\'s Shell Programming'
Saya mencoba ini di server centos saya, itu tidak berhasil, >
permintaan untuk mengisyaratkan saya mengetik lebih banyak.
Saya bertanya-tanya, karena dua kutipan tunggal mengubah setiap karakter khusus menjadi karakter normal, yang termasuk simbol pelarian \
, tetapi mengecualikan dirinya sendiri '
,,
bagaimana saya harus mewakili satu kutipan tunggal '
dalam frasa yang dikutip tunggal?
echo It\'s Shell Programming
atauecho "It's Shell Programming"
?echo Wow, I'm going to have lots of $$$$$$ now
$
juga. Sesuatu sepertiecho Wow, I\'m going to have lots of \$\$\$\$\$\$ now
atau hanyaecho Wow, I\'m going to have lots of '$$$$$$' now
echo 'It'"'"'s Shell Programming'
. Saya hanya membaginya menjadi 3 string, yang pertama dan yang terakhir dikelilingi oleh tanda kutip tunggal, tetapi yang di tengah memiliki tanda kutip tunggal yang dikelilingi oleh tanda kutip ganda.Jawaban:
Tutorialnya salah.
POSIX mengatakan:
Inilah beberapa alternatif:
Bacaan lebih lanjut: Kutipan - Wiki Greg
sumber
echo 'It''s Shell Programming'
- zsh denganrc_quotes
set opsi (dan shell rc juga) - sepasang tanda kutip tunggal di dalam tanda kutip tunggal mewakili tanda kutip tunggal.q="'"
danqq='"'
membuat pembersih ini. Ini kemudian memungkinkanecho "It${q}s ${qq}Shell Programming${qq}"
(kurung keriting diperlukan diberikan huruf tambahan). POSIX-safe. Lapisan luar harus dikutip ganda.Anda dapat gunakan:
Untuk dengan aman mengutip kutipan garis nilai per baris.
Tergantung pada Shell, Anda mungkin juga memiliki opsi untuk melakukan:
Padahal saya biasanya lebih suka melakukan:
Pendekatan yang lebih manual bisa terlihat seperti:
... yang, setidaknya, bebas garpu.
sumber
printf %q\\n "$arbitrary_value"
, yang lain terlalu rumit.Jika ada orang lain datang untuk menempatkan campuran tanda kutip tunggal dan ganda ke dalam file, ini juga berfungsi:
Segala sesuatu yang mungkin dilihat shell sebagai variabel harus diloloskan oleh backslash:
sumber