2011-01-14 196 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重定向。没有看到它的内容,我们不能进一步帮助。

相关问题