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

标签 linux bash shell ssh scripting

我想将管道命令序列的输出保存到远程服务器上的变量中。我正在尝试通过 ssh 这样做:

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 是我脚本中包含数字的变量。

我尝试了不同的语法,例如:“$( )”来捕获输出,但它仍然不起作用。

最佳答案

如果您使用双引号将所有内容括起来,那么反引号将由本地 shell 而不是远程 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'

关于linux - 如何在 bash 中通过 ssh 将命令输出保存到变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46647428/

相关文章:

shell - 为什么我的 cron 作业执行多次?

bash - 别名在脚本中丢失

linux - Apache 站点启用

linux - 使用命令行输入参数

linux - 如何获取路径的前两个目录

bash - shell 脚本 (bash/ksh) : 20 seconds to read a variable

git - 是否有可能 'colorize' git 日志消息?

linux - 无论服务器身份验证如何,都对 Git 存储库进行身份验证

linux - Ubuntu 内核如何检测其正在虚拟机上运行?

bash - sshing时传递bash变量