Shell:将ssh命令结果保存到局部变量

时间:2016-07-29 09:46:11

标签: shell ssh

我有一个ssh命令发回一个数字:

ssh ${user}@${hostname} "wc -l < ${workspace}/logs" 

其中${user},${hostname},${workspace}是变量。

现在我想将结果保存到名为lines的局部变量中,我试过:

lines=${ssh ${user}@${hostname} "wc -l < ${workspace}/logs" }

但它不起作用,为什么?

2 个答案:

答案 0 :(得分:1)

在将结果提取到变量时,您的命令应包含在“()”而不是“{}”中。另外,其他只是变量而不是命令所以不需要包装器(假设它们是在脚本中定义的)。

lines=$(ssh $user@$hostname "wc -l < $workspace/logs")

答案 1 :(得分:0)

您应该使用$()来获取命令的结果,而不是${}(至少在bash中)。下面的行假定workspace是在执行lines=的主机上定义的变量,而不是在远程上定义的变量(如果它在遥控器上,则需要转义$:{{ 1}}

\${workspace}/logs