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

时间:2016-05-03 12:35:56

标签: bash shell

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

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

finalString="Hello\nWorld"
sudo bash -c 'echo -e "$finalString"'

我做错了什么?

2 个答案:

答案 0 :(得分:4)

  1. 您未将变量导出到环境中,以便子进程可以将其拾取。

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

  3. \

    finalString="Hello\nWorld"
    export finalString
    sudo -E bash -c 'echo -e "$finalString"'
    

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

    finalString="Hello\nWorld"
    sudo bash -c 'echo -e "'"$finalString"'"'
    

答案 1 :(得分:1)

你可以这样做:

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

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

虽然我建议不要将-e标记与echo一起使用。相反,你可以这样做:

finalString="Hello
World"
相关问题