У меня есть файл sortedurls.txt, который является результатом построчного переноса домена на URL.sortedurls.txt выглядит следующим образом
https://example.com/page1.php
https://example.com/page2.php
https://example.com/page-more.php
Циклически перебирая sortedurls.txt (url by url) и собирая теги img со страниц с помощью wget и hxselect.Просто для проверки сохранения в файл testtagstring.txt.В таком случае это выглядит так:
<img alt="…" src="/assets/…/image1.jpg">§<img alt="…" src="/assets/…/image11.jpg">
<img alt="…" src="/assets/…/image2.jpg">§
и т. Д.
Разделение каждой строки разделителя § в массив 'tags'.Подсчитайте элементы массива и добавьте результат в файл для проверки.
Проблема: Выполнение в терминале работает правильно, и вывод показывает правильное количество записей (6, 1, 1, 9…).Выполняя cronjob, IFS удваивает сумму до 12, 2, 2, 18….
Любая идея, почему это меняет свое поведение, просто используя cron?
#!/bin/bash
# Set this script dir path
scriptdirpath=/usr/local/www/apache24/data/mydomain.com/testdir
# Some config variables
useragent=googlebot
searchtag=img
delimiter=§
# Change to pwd
cd $scriptdirpath
# Make files
echo > testtagstring.txt
echo > testimages.txt
# Loop through the sortedurls.txt
while read p; do
tagString=$(wget -qO - --user-agent="$useragent" $p | hxnormalize -x | hxselect -s "$delimiter" $searchtag )
echo $tagString >> testtagstring.txt
IFS="$delimiter" read -r -a tags <<<"$tagString"
echo "Amount of img tags: ${#tags[@]}" >> $scriptdirpath/testimages.txt
done < $scriptdirpath/sortedurls.txt