2016-09-16 423 views
0

我有這樣的命令:

ssh [email protected] 'sed -e "s|foo|${bar}|" /home/data/base_out.sql > /home/data/out.sql' 

sed命令在本地shell工作。但它不是通過ssh命令擴展變量。謝謝!

回答

0

規則是在單引號內不擴展參數。你在整個命令周圍都有單引號。之前的命令字符串作爲參數傳遞給ssh,這是你想要的東西通過

ssh [email protected] "sed -e 's|foo|$bar|' /home/data/base_out.sql > /home/data/out.sql" 

現在$bar擴展:

試試這個。

我刪除了大約${bar}的大括號,因爲我相信他們提供了一種錯誤的安全感。在這種情況下,他們不會保護您免於與using shell variables in sed commands相關的任何問題。