脚本函数中的ssh调用

And*_*dré 4 bash scripting

我编写了一个简单的脚本,在while循环中调用一个函数.我已经确定while循环正常工作.在do部分,我调用了一个函数.这也很好.但是,只要我在函数实现中使用ssh在远程主机上执行命令,这似乎会破坏调用while循环.对于第一次迭代,函数调用成功,在远程主机上调用该命令,并按预期返回结果.然而,脚本结束就好像我在函数实现中做了一个退出,我还没有.

#!/bin/bash

function update_relevant_domUs() {
      if [ $# -eq 0 ]
      then
              fatal not enough arguments
      fi
      if [ $# -gt 2 ]
      then
              fatal "unsupported number of arguments $#"
      fi

      if [ $# -eq 2 ] && [ "$1" != "Domain-0" ] && [ "$1" != "Name" ]
      then
              #printf "$NAME \t $STATE\n"
              local cmd="ssh root@$1 /usr/bin/zypper --non-interactive refresh"
              printf "Executing command: $cmd\n"
              #`ssh root@$1 echo \$PATH`
              local res=`$cmd`
              local ret=$?
              printf "Ret: $ret - Report: \n $res \n\f"
      fi
      return 0
 }

 xm list | while read NAME ID MEM VCPUS STATE TIME; do update_relevant_domUs $NAME $STATE; done
Run Code Online (Sandbox Code Playgroud)

如果我更换线

local res=`$cmd`
Run Code Online (Sandbox Code Playgroud)

local res=`echo $cmd`
Run Code Online (Sandbox Code Playgroud)

外部while循环按预期执行.任何有关这方面的帮助将不胜感激.

最好的祝福,

ajag

Ign*_*ams 5

ssh正在消耗stdin.通过-n.