使用 sudo bash -c 的回显变量 'echo $myVariable' - bash 脚本



我想将字符串回显到/etc/hosts文件中。该字符串存储在一个名为$myString的变量中。

当我运行以下代码时,回波为空:

finalString="HellonWorld"
sudo bash -c 'echo -e "$finalString"'

我做错了什么?

  1. 您并没有将变量导出到环境中,以便子流程可以拾取该变量。

  2. 你没有告诉sudo保护环境。

\

finalString="HellonWorld"
export finalString
sudo -E bash -c 'echo -e "$finalString"'

或者,您可以使用当前的shell替代品:

finalString="HellonWorld"
sudo bash -c 'echo -e "'"$finalString"'"'

您可以这样做:

bash -c "echo -e '$finalString'"

即使用双引号将参数传递到子shell,因此变量($finalString)按预期扩展(由当前shell扩展)。

尽管我建议不要将-e标志与echo一起使用。相反,你可以做:

finalString="Hello
World"

最新更新