我想将字符串回显到 / etc / hosts 文件中。该字符串存储在名为$myString
的变量中。
当我运行以下代码时,echo为空:
finalString="Hello\nWorld"
sudo bash -c 'echo -e "$finalString"'
我做错了什么?
答案 0 :(得分:4)
您未将变量导出到环境中,以便子进程可以将其拾取。
您还没有告诉sudo
保护环境。
\
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"