У меня на сервере Ubuntu 13.10 есть простой сценарий оболочки для загрузки всех файлов в списке.
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
.
Что не так со сценарием?
Я предлагаю вам использовать:
wget -O - -q http://domain.com/QuickSearch?object=$n&search=Overview > $n.txt
См. man wget
, чтобы понять, почему.
Я проверил вывод, и он показывает %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*
Работал как шарм.