Shell脚本在调用另一个脚本后退出循环

时间:2011-01-14 10:16:12

标签: shell unix

我有一个shell脚本s1在循环中调用另一个脚本s2。

然而,在s2返回后,s1似乎无法继续循环。

注释掉调用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

1 个答案:

答案 0 :(得分:3)

s2内的某个地方,你有一个消耗stdin的命令,因此从$tempfile重定向。如果没有看到它的内容,我们就无法进一步帮助。