2011-01-14 176 views
1

我有一個shell腳本s1在循環中調用另一個腳本s2。調用另一個腳本後退出循環的Shell腳本

但是s1似乎無法在s2返回後繼續循環。

註釋掉調用s2的行將使循環繼續。

s2複製一個文件,s1檢查條件並使用s2複製幾個文件。

任何人都可以給一個指針這裏發生了什麼?

... 
while read line 
do 
    s2 param1 param2 param3 
    echo "copy done" 
done < $tempfile 

echo "out of loop" 
... 

「拷貝完成」被打印出來,所以是「退出循環」

在S2中的一些內容:

if ls -l $LOGDIR | grep -w sftp.log 

if ssh $USER -i $IDENTITY "ls -l $MOV_LOC" 

cat $TMPDIR/$TMPFILE1 | /usr/xpg4/bin/awk -v logdir=$LOGDIR -v register=$REGISTER -v rmt_cmd=$RMT_CMD -v identity=$IDENTITY '{print "scp -q -r -P 22 -i", identity, rmt_cmd ,$NF, ">>" , logdir "/" register , "2>&1"}' > $TMPDIR/$TMPSCRIPT2 

cat $TMPDIR/$TMPFILE1 | /usr/xpg4/bin/awk -v tmpdir=$TMPDIR -v list=$TMPFILE2 '{print "digest -a sha1" , $NF , ">>", tmpdir "/" list}' > $TMPDIR/$TMPSCRIPT1 

ssh $USER -i $IDENTITY "mv $REMOTE_QUEUE $MOV_LOC" > $TMPDIR/$TMPFILE5 
+0

s2會返回成功嗎?嘗試回聲「複製完成,ret code $?」 – ulidtko 2011-01-14 10:23:10

+0

s2是否有文件涉及到`$ tempfile`,例如覆蓋它? – 2011-01-14 10:59:51

回答

3

某處內s2你有一個命令被消耗標準輸入,因此從$tempfile重定向。沒有看到它的內容,我們不能進一步幫助。