【问题标题】:Shell: save ssh command result to local variableShell:将 ssh 命令结果保存到局部变量
【发布时间】:2016-07-29 17:59:50
【问题描述】:

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

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

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

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

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

但它不起作用,为什么?

【问题讨论】:

  • 您是要计算工作区/日志中的日志数,还是日志中的行数?
  • @GeneralBrae 我想计算名为“logs”的文件中的行号

标签: shell ssh


【解决方案1】:

将获取结果分配给变量时,您的命令应包含在“()”而不是“{}”中。此外,其他只是变量而不是命令,因此不需要包装器(假设它们是在脚本或其他东西中定义的)。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-19
      • 2011-10-21
      • 2014-04-16
      • 1970-01-01
      • 2013-11-25
      • 2013-12-10
      • 2021-11-18
      • 2013-01-12
      相关资源
      最近更新 更多