我有一个ssh命令发回一个数字:
ssh ${user}@${hostname} "wc -l < ${workspace}/logs"
其中${user},${hostname},${workspace}
是变量。
现在我想将结果保存到名为lines
的局部变量中,我试过:
lines=${ssh ${user}@${hostname} "wc -l < ${workspace}/logs" }
但它不起作用,为什么?
答案 0 :(得分:1)
在将结果提取到变量时,您的命令应包含在“()”而不是“{}”中。另外,其他只是变量而不是命令所以不需要包装器(假设它们是在脚本中定义的)。
lines=$(ssh $user@$hostname "wc -l < $workspace/logs")
答案 1 :(得分:0)
您应该使用$()
来获取命令的结果,而不是${}
(至少在bash中)。下面的行假定workspace
是在执行lines=
的主机上定义的变量,而不是在远程上定义的变量(如果它在遥控器上,则需要转义$
:{{ 1}}
\${workspace}/logs