对所有文件执行 wget 后如何删除服务器中的文件?
我知道当您通过 ftp 连接到服务器时,删除命令可以工作,但我无法在运行 shell 脚本时使用该命令。以下是我的脚本,请告诉我其中有什么问题。
#!/bin/bash
filelist='ls *20120330*'
for file in $filelist
do
ftp -vn <$hostname> <<EOFD
quote USER <username>
quote PASS <Pass>
binary
ls -lrt *20120330*
delete $filelist
quit
EOFD
done
You want
for file in *20120330*
而不是对字面意思进行循环ls
and *20120330*
。如果您的实际用例要复杂得多,那么您可能需要将文件列表放在变量中,但我的猜测是您不会,也永远不会。
(你可能在想的是
for file in `ls *20120330*`
但这也是错误的,原因不同但又相关。也可以看看http://porkmail.org/era/unix/award.html#ls http://porkmail.org/era/unix/award.html#ls)
顺便说一句,您最好创建一个删除所有文件名的脚本,而不是为每个要删除的文件创建一个新的 ftp 会话;
#!/bin/bash
dellist=
nl='
' # yeah, nl is a newline in single quotes
for file in *20120330*
do
dellist="delete $file$nl"
done
ftp -vn <$hostname> <<EOFD
quote USER <username>
quote PASS <Pass>
binary
ls -lrt \*20120330\*
$dellist
quit
EOFD
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)