2015-03-25 69 views
0

我想從本地機器執行到使用ssh的遠程機器。我已成立$HN$ManagedServerName值 - 但是當我執行以下命令 - $ManagedServerName變量正在空值變量不傳遞給遠程機器

ssh $HN 'echo `cd /u01/app/oracle/product/webcenter/sites; find -name "*.ini" -not -path "./Shared/*" -not -path ".logs/*" -exec sed -i 's/TWP/'$ManagedServerName'/g' {} \; 

請建議,

感謝

+0

反標籤未終止。您的示例命令無效。 – 2015-03-25 12:55:59

回答

1

您的q意思是錯誤的。 echo之前的單引號被sed表達式中的第一個單引號關閉,然後在$ ManagedServerName周圍打開一個新的單引號,因此另一端的shell試圖擴展該變量。請嘗試:

sed -i "s/TWP/'"$ManagedServerName"'/g" 
+0

這應該工作 - 我現在正在測試 – Ravikanth 2015-03-25 13:28:03

0

我想你會想使用雙在您的sed命令中引號,以便您可以對搜索詞進行適當的變量擴展和連接:

ssh $HN 'echo `cd /u01/app/oracle/product/webcenter/sites; find -name "*.ini" -not -path "./Shared/*" -not -path ".logs/*" -exec sed -i "s/TWP/$ManagedServerName/g" {} \; 
+0

如果我不在命令中使用'echo'和cd - 它的工作 – Ravikanth 2015-03-25 12:48:16

+0

但我想用echo命令和cd – Ravikanth 2015-03-25 12:48:26

+0

遠程機器將Null值設置爲$ ManagedServerName – Ravikanth 2015-03-25 12:50:13