bash将远程计算机的输出捕获到变量中

bash将远程计算机的输出捕获到变量中,bash,for-loop,Bash,For Loop,我正在尝试使用cli命令捕获多个远程设备的输出,然后使用grep 717GE并针对多个主机打印到屏幕。如下所示,它从$hosts捕获IP并将其传递给$outip,而不是从命令行使用相同命令时显示的内容。我认为该变量将捕获从给定命令返回的数据。有人能帮助我,帮助我理解我做错了什么吗?我真的对学习很感兴趣,所以请不要发表尖刻的评论。如果可能的话 for host in ${hosts[@]}; do seven=( $(cli $hosts show gpon ont summary -n --

我正在尝试使用cli命令捕获多个远程设备的输出,然后使用grep 717GE并针对多个主机打印到屏幕。如下所示,它从$hosts捕获IP并将其传递给$outip,而不是从命令行使用相同命令时显示的内容。我认为该变量将捕获从给定命令返回的数据。有人能帮助我,帮助我理解我做错了什么吗?我真的对学习很感兴趣,所以请不要发表尖刻的评论。如果可能的话

for host in ${hosts[@]}; do
  seven=( $(cli $hosts show gpon ont summary -n --max=3 --host ) )
  outip=( $(grep 717GE $seven) )
  echo $outip
done
输出:

+ for host in '${hosts[@]}'
+ seven=($(cli $hosts show gpon ont summary -n --max=3 --host ))
++ cli 10.100.112.2 show gpon ont summary -n --max=3 --host
+ outip=($(grep 717GE $seven))
++ grep 717GE 10.100.112.2 grep: 10.100.112.2: No such file or directory

除非您想创建一个数组,否则不要使用
var=(…)
,并使用bash-here字符串
grep—您的命令似乎没有多大意义。尝试
VAR=$(sshuser@server“此处的某些命令”)
ssh未在远程设备上侦听。我使用cli的原因有很多。用法:cli[][c:][options]1。删除
seven
outip
seven=$(cli$hosts show gpon ont summary-n--max=3--host)
outip=$(grep 717GE$seven)
2。在设置
seven
时,您似乎有一个输入错误:使用
$host
而不是
$hosts
。谢谢,这确实有帮助,但还有其他问题需要解决。格式不正确。还有此错误:grep:unrecognized option
————————————————————————————————————————————————————————————用法:grep[option]。。。模式[文件]。。。有关详细信息,请尝试“grep--help”。+outip=你是我新结识的朋友,你真了不起。也谢谢你的课。我真的很感谢你的帮助。还有一个问题。我的脚本在没有717GE可列出时中断。最好在我的for语句中嵌套If-else语句吗?Nvm。。我在脚本的开头有{set-e},当我删除它时,我的脚本工作得非常好。谢谢
for host in ${hosts[@]}; do
  # Assign as variable rather than array, and use $host instead of hosts
  seven=$(cli $host show gpon ont summary -n --max=3 --host )
  # Grep with "$seven" as text input and not as a list of filenames
  outip=$(grep 717GE <<< "$seven")
  echo "$outip"
done