我想将一个管道序列的输出保存到远程服务器上的变量中。我试图通过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是我脚本中包含数字的变量。
我尝试了不同的语法:" $()"捕获输出,它仍然无法正常工作。
答案 0 :(得分:1)
如果你使用双引号来包围所有内容,那么反引号将由本地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'