2017-10-09 222 views
1

我想將管道命令序列的輸出保存到遠程服務器上的變量中。我想通過ssh做這樣的:如何通過ssh在bash中將命令輸出保存到變量中

ssh $host "kernel_ver=`sudo yum list kernel --showduplicates | grep 7.$os_rel | tr -s " " | cut -d" " -f2 | head -n1`; echo $kernel_ver" 

我得到這個錯誤:

Error: No matching Packages to list 
ssh: Could not resolve hostname kernel_ver= ; echo : Name or service not known 

$ os_rel是包含許多我的腳本變量。

我嘗試了不同的語法,如:「$()」來捕獲輸出,但它仍然不起作用。

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。 – jww

+0

問題是100%的話題。大多數bash的問題都很好。那些不是純粹的互動問題,比如「我該如何改變我的鍵盤綁定?」或「我如何爲提示添加顏色?」 –

回答

1

如果使用雙引號括住所有內容,則反引號將由本地shell評估,而不是遠程評估。所以將變量引用$kernel_ver。使用單引號禁用這兩個。

ssh $host 'kernel_ver=`sudo yum list kernel --showduplicates | grep 7.$os_rel | tr -s " " | cut -d" " -f2 | head -n1`; echo $kernel_ver' 

如果$os_rel是一個局部變量,你想擴大,那麼你就需要暫時離開的單引號。

ssh $host 'kernel_ver=`sudo yum list kernel --showduplicates | grep 7.'"$os_rel"' | tr -s " " | cut -d" " -f2 | head -n1`; echo $kernel_ver' 
+0

爲什麼downvote?有錯誤嗎? –

相關問題