在对所有文件进行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
Run Code Online (Sandbox Code Playgroud)
你要
for file in *20120330*
Run Code Online (Sandbox Code Playgroud)
而不是字面上的字ls和循环*20120330*.如果你的真实用例更复杂,那么你可能有理由想要一个变量中的文件列表,但我猜你不会,也绝不会.
(你可能在想的是
for file in `ls *20120330*`
Run Code Online (Sandbox Code Playgroud)
但由于不同但相关的原因,这也是错误的.另见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
Run Code Online (Sandbox Code Playgroud)