【问题标题】:how to run a script and keep result in a variable in a remote shell script如何运行脚本并将结果保存在远程 shell 脚本中的变量中
【发布时间】:2017-11-02 04:59:41
【问题描述】:

我在 .sh 文件中编写了以下脚本:

#!/bin/bash

ssh root@192.168.10.10 "a=`ps -ef`;echo $a";

运行它并得到像“bash: root: command not found...”这样的错误行,“a=`ps -ef`;echo $a”有什么问题?

谢谢

【问题讨论】:

  • 如果您只是从脚本外部的命令行运行命令ssh root@192.168.10.10 'ps -ef' 会发生什么?您是否对192.168.10.10 上的root 帐户进行了公钥/私钥身份验证?

标签: shell ssh


【解决方案1】:

试试类似的东西:

local a
a = $(ssh root@192.168.10.10 "echo ps -ef;")

这样,你在 ssh 之后执行 echo,然后将这个命令的结果存储在 a.

【讨论】:

  • 但是我需要将变量 $a 保留在脚本中,因为我需要用它来做更多的工作,为什么 a=`ps -ef` 不能工作?
  • 因为你需要给出命令的完整路径。看我的回答
  • 我刚刚跑了 ssh root@192.168.10.10 "a=`ls -l /`;echo $a";并得到以下结果: bash: drwxr-xr-x: command not found... bash: drwxr-xr-x: command not found... ... 似乎部分可行,但不知道原因
  • 首先,在 bash 中,= 周围不允许有空格a=$(ssh root@192.168.10.10 'ls -l /') 将使用 命令替换 将来自 ls -l / 的输出存储在本地计算机上的变量 a 中。只需printf "a:\n%s\n" "$a" 确认即可。
  • @DavidC.Rankin,我需要在脚本中保留'a',它将在后续远程脚本中处理,所以我要运行的是一个巨大的脚本,例如ssh root@192.168 .10.10 "a=`ps -ef`;b=`cat $a | grep ... | sed ...`;c=`...$b...`",所以需要保留$a在整个远程脚本中,而不是作为本地脚本中的变量
猜你喜欢
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2013-08-24
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
相关资源
最近更新 更多