我编写了一个名为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
答案 0 :(得分:0)
如果您希望脚本继续,请不要使用exec
。 exec
将使用您提供的命令完全替换当前进程。它永远不会返回 1 。
只需像调用gzip
和echo
以及其他命令(即直接调用)一样调用脚本。
gzip $fbname.csv
/home/amithsa/del.sh $fbname.csv
1 除非命令无法执行,并且您启用了execfail
选项。或者您正在运行交互式shell。