2010-03-10 103 views
4

我想通過ssh連接傳遞變量,就像這樣:傳遞變量

working_dir="/home/user/some_dir/"

ssh [email protected]_host 'qsub $working_dir/some_file.txt'

連接本身的建立,但是這個代碼給我以下錯誤:

working_dir: Undefined variable.

這可以通過噸來解釋,事實上,遠程機器沒有變量$working_dir,因爲它是在本地定義的。

有沒有辦法在本地獲取命令中的值?使用雙引號

回答

11

試試,應該在本地計算變量:

ssh [email protected]_host "qsub $working_dir/some_file.txt"

+0

Thnx,你是一個拯救生命的人! – lugte098 2010-03-10 12:47:27

+0

我的小bash-recipe:「只有在你需要確保它們之間的內容應該從字面上解釋時才使用單引號。」 – orithena 2010-03-10 12:51:40

+0

當你需要在本地擴展grep變量以遠程傳遞給命令時,該怎麼辦? ssh qa @ myremote'find $(ls -r /home/qa/log/*.*.log | grep -vi audit | head -n 1)-type f -print | xargs grep $ ERRORS' – Dss 2015-07-14 20:43:28

2

您使用的是單引號字符串 - 和我想的變量不是那些內插值。

如果您嘗試使用雙引號字符串怎麼辦?
像這樣:

ssh [email protected]_host "qsub $working_dir/some_file.txt" 

隨即,$working_dir變量應該在你的最終進行插值 - 並通過SSH連接發送它的價值。

+0

也謝謝你,快速回復! – lugte098 2010-03-10 12:47:49

+0

不客氣:-) – 2010-03-10 12:49:10