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

时间:2015-01-19 10:46:46

标签: linux bash shell unix

我编写了一个名为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

1 个答案:

答案 0 :(得分:0)

如果您希望脚本继续,请不要使用execexec将使用您提供的命令完全替换当前进程。它永远不会返回 1

只需像调用gzipecho以及其他命令(即直接调用)一样调用脚本。

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

1 除非命令无法执行,并且您启用了execfail选项。或者您正在运行交互式shell。