Используемая вами конструкция не особенно безопасна. Так как cat urls.txt
делится на пробелы, любые пробелы в файле, случайно попавшие в файл, прервут вашу обработку. Если вы уверены, что хотите обрабатывать вещи построчно, используйте read
.
Вы также захотите заключить в кавычки свои переменные и удалить или изменить символы, которые не разрешены в именах файлов.
while read -r url; do
tool -u "$url" -o "output-${url//\//_}-tool.html"
done < urls.txt
А если вы хотите удалить метод, вы можете сделать это с помощью расширения дополнительных параметров:
shopt -s extglob
while read -r url; do
url="${url#http?(s)://}"
url="${url%%/*}"
tool -u "$url" -o "output-${url}-tool.html"
done < urls.txt
Используется extglob
, чтобы сделать s
в https
необязательным, и включает в себя только имя домена в имени файла buy, удаляя все ранее в URL вместе со всем путем.
Обратите внимание, что extglob
требует bash версии 4 или выше.