我有一个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
答案 0 :(得分:3)
在s2
内的某个地方,你有一个消耗stdin的命令,因此从$tempfile
重定向。如果没有看到它的内容,我们就无法进一步帮助。