Perbedaan saat menggunakan backticks dalam tanda kutip ganda dan tanda kutip tunggal di Bash


12

Mengapa dua eksekusi berikut berbeda dalam output? (Saya perlu tanda kutip ganda untuk variabel dalam perintah akhirnya saya)

$ sudo su -c "echo `cat /root/root_file`"
cat: /root/root_file: Permission denied
$ sudo su -c 'echo `cat /root/root_file`'
Yay, highly classified content!

Jawaban:



6

Pada contoh pertama, backticks dievaluasi oleh shell Anda (seperti Anda dan bukan root). Coba dengan

sudo su -c "echo `whoami`"

Dalam yang kedua dengan tanda kutip tunggal 'seluruh string echo `cat /root/root_file`dilewatkan ke shell root.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.