如何通过ssh在bash中将命令输出保存到变量中

问题描述:

我想将管道命令序列的输出保存到远程服务器上的变量中。我想通过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://*.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。 – jww

+0

问题是100%的话题。大多数bash的问题都很好。那些不是纯粹的互动问题,比如“我该如何改变我的键盘绑定?”或“我如何为提示添加颜色?” –

如果使用双引号括住所有内容,则反引号将由本地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?有错误吗? –