12 为什么以下两个执行的输出不同?(我最终的命令中的变量需要双引号) $ 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! bash permissions sudo bash-scripting — Ambidex source
19 Bash在执行命令之前执行一系列扩展 (在这种情况下)。在第一种情况下,执行命令替换是因为它用双引号引起来-它像您一样执行,因此会出错。在第二种情况下,单引号防止扩展,因此在root的shell运行之前不会替换反引号。sudo 另请参阅https://www.gnu.org/software/bash/manual/bashref.html#Quoting — 格伦·杰克曼 source
6 在第一个示例中,反引号由您的shell(作为您而不是root)评估。试试看 sudo su -c "echo `whoami`" 在第二个中使用单引号'将整个字符串echo `cat /root/root_file`传递到根shell。 — 马泰奥 source