我想将管道命令序列的输出保存到远程服务器上的变量中。我正在尝试通过 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/