Сценарий оболочки, выходящий из цикла после вызова другого сценария - PullRequest
1 голос
/ 14 января 2011

У меня есть сценарий оболочки s1, вызывающий другой цикл s2 в цикле.

Однако 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

1 Ответ

3 голосов
/ 14 января 2011

Где-то внутри s2 у вас есть команда, которая использует stdin и, следовательно, перенаправление с $tempfile. Не видя его содержания, мы не можем помочь дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...