我的 Ubuntu 13.10 服务器上有一个简单的 shell 脚本,用于下载列表中的所有文件。
filen="/home/chester/test/workobject.txt"
dir_log="/home/chester/test"
if [ -f "$filen" ]
then
cd $dir_log
for n in `cat $filen`
do
echo $n
wget -O $n.txt -q http://domain.com/QuickSearch?object=$n&search=Overview
done
else
echo "Nothing to do."
fi
内容workobject.txt
:
9957881
9A39879
脚本运行正常。但是,当它下载9957881.txt
文件时,它会将文件名更改为9Z44X7~P.txt
。
剧本有什么问题?
答案1
我建议你使用:
wget -O - -q http://domain.com/QuickSearch?object=$n&search=Overview > $n.txt
看一下man wget
就明白为什么。
答案2
我检查了输出,发现%0D
文件名上显示 。经过进一步研究,我发现这是 上的尾随换行符workobject.txt
。遗憾的是,我无法对文件的格式进行任何处理,workobject.txt
因为它仅通过 推送到我的服务器scp
。
我只是让脚本做同样的事情,并在处理后批量重命名所有文件以删除%0D
文件名尾随的部分。
最终的脚本如下所示:
filen="/home/chester/test/workobject.txt"
dir_log="/home/chester/test"
if [ -f "$filen" ]
then
cd $dir_log
for n in `cat $filen`
do
wget -q http://domain.com/QuickSearch?object=$n
done
else
echo "Nothing to do."
fi
rename "s/%0D//g" Quick*
非常有效。