2012-06-24 55 views
0
ssh $hname "cd /opt/tomcat/webapps/aware/WEB-INF/classes/com && for FNAME in `tar tvf /tmp/prop.tar | awk '{print $6}'` 
do 
    if test ! -s "/tmp/$fname/prop_bkup.tar" 
    then 
    ls $FNAME && tar cvf /tmp/$fname/prop_bkup.tar $FNAME && rm $FNAME || echo "$FNAME is a new file". 
    else 
    ls $FNAME && tar uvf /tmp/$fname/prop_bkup.tar $FNAME && rm $FNAME || echo "$FNAME is a new file". 
    fi 
done" 

上面的for循環在遠程主機中不起作用。任何人都可以幫助我嗎?for loop in remote host is not working - shell腳本

回答

0

我編輯了你的問題,把代碼放到代碼塊中。在此同時,我也看到一些潛在的問題:

  1. 周圍使用主命令單引號,以防止當地 殼填充的變量。這也會導致在遠程命令中帶有雙引號的問題 。 如果您更改爲單引號,則需要確保您仍然正確引用了awk參數。
  2. 您已經使用小寫字母$fname和大寫字母$FNAME - 它們應該都是相同的(本例中爲$FNAME)。

您需要解釋「不工作」的含義。這會給你更好的答案。

+0

嗨,我們不能通過使用遠程主機中的命令文件來執行此相同的循環,我的意思是使用echo命令從本地寫入循環並在遠程主機上執行 – user1477698

+0

如果您想要,但會出現相同的問題。你最好用你想運行的腳本編寫一個本地文件,然後使用scp將它複製到遠程主機,然後通過ssh執行它。 – lxop

+0

嗨,我做了以下修改,它工作正常。感謝您給予的支持。 – user1477698