2
我想將一個字符串回顯到/etc/hosts文件中。該字符串存儲在名爲$myString
的變量中。
當我運行下面的代碼回聲是空的:
finalString="Hello\nWorld"
sudo bash -c 'echo -e "$finalString"'
我在做什麼錯?
我想將一個字符串回顯到/etc/hosts文件中。該字符串存儲在名爲$myString
的變量中。
當我運行下面的代碼回聲是空的:
finalString="Hello\nWorld"
sudo bash -c 'echo -e "$finalString"'
我在做什麼錯?
您不會將變量導出到環境中,以便可以通過子流程獲取該變量。
你還沒有告訴sudo
保護環境。
\
finalString="Hello\nWorld"
export finalString
sudo -E bash -c 'echo -e "$finalString"'
或者,你可以在當前shell替代品來代替:使用雙引號來
bash -c "echo -e '$finalString'"
即:
finalString="Hello\nWorld"
sudo bash -c 'echo -e "'"$finalString"'"'
你可以這樣做向su提供參數bshell,因此變量($finalString
)按預期展開(由當前shell)。
雖然我會建議不要使用-e
標誌與echo
。相反,你可以這樣做:
finalString="Hello
World"
即:使用'export'使變量在子shell中可用。 – fedorqui
將變量導出到環境中,它只是'export finalString'?因爲它仍然沒有打印變量。 – user2771150
@ user2771150你可能需要'-E'在sudo - >'sudo -E bash -c'echo -e「$ finalString」''。 – fedorqui