Diferença ao usar reticulares entre aspas duplas e aspas simples no Bash


12

Por que as duas execuções a seguir diferem na saída? (Preciso de aspas duplas para variáveis ​​no meu comando final)

$ 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!

Respostas:



6

No primeiro exemplo, os backticks são avaliados pelo seu shell (como você e não root). Tente com

sudo su -c "echo `whoami`"

No segundo com aspas simples, 'toda a cadeia echo `cat /root/root_file`é passada para o shell raiz.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.