2011-02-08 95 views
4

我已經編寫了一個簡單的腳本,它在while循環中調用一個函數。我確定while循環正常工作。在do部分我調用一個函數。這也很好。然而,只要我在函數實現中使用ssh在遠程主機上執行命令,這似乎會中斷調用while循環。對於第一次迭代,函數調用成功,在遠程主機上調用該命令,並按預期返回結果。然而,然後腳本結束,就好像我已經做了功能實現中的退出,我沒有。腳本函數中的ssh調用

#!/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 [email protected]$1 /usr/bin/zypper --non-interactive refresh" 
       printf "Executing command: $cmd\n" 
       #`ssh [email protected]$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 

如果我替換行

local res=`$cmd` 

local res=`echo $cmd` 

外而按預期執行循環。任何關於此的幫助將不勝感激。

此致

ajag

回答

5

ssh正在消費標準輸入。通過-n

+0

謝謝你做到了! – 2011-02-08 12:43:50