在循环内调用 sftp 脚本时循环退出

Loop exit while calling the sftp script inside the loop

我写了一个名为 process.sh 的 shell 脚本,它在循环内调用 sftp 脚本 del.sh。但是一旦调用 sftp 脚本(del.sh),它就不会返回到 process.sh

Process.sh


#!/bin/bash
for i  in $(ls *.csv)
do
 fbname=$(basename "$i" .csv)
echo "$fbname"
if [ -f $fbname.done ]
then
gzip $fbname.csv
exec /home/amithsa/del.sh $fbname.csv 
else
echo "File Not Found"
fi
done;

del.sh


#!/usr/bin/expect
set arg1 [lindex $argv 0]
spawn sftp xyz@10.10.10.10 22
expect "password:" 
send "xxxxxxxxx\n" 
expect "sftp>"
send "cd sftp\n"
expect "sftp>"
send "rm $arg1\n"
expect "sftp>"
send "rm *.html\n"
expect "sftp>"
send "exit\n"
interact

如果您希望脚本继续运行,请不要使用 execexec 将用您给它的命令完全替换当前进程。它永远不会 returns1.

就像调用 gzipecho 以及其他命令一样调用您的脚本,即直接调用。

gzip $fbname.csv
/home/amithsa/del.sh $fbname.csv 

1 除非该命令无法执行并且,并且您启用了 execfail 选项。或者您是 运行 互动 shell.