Я делаю простую итерацию по содержимому удаленного текстового файла, но застреваю в именах разделяемых файлов, поскольку у них есть пробелы внутри.Итерация по строкам содержит пробелы
#!/bin/bash
for u in $(curl http://XXXXXX.com/urls.txt)
do
wget "${u%|*}" -O "${u#*|}" -P ./Directory/
done
Текстовый файл содержит ниже строк в каждой строке:
https://OOOOOOOO.com?url1|My file with spaces in name.mp4
https://OOOOOOOO.com?url2|How to escape spaces?.mp4
https://OOOOOOOO.com?url3|Mixed up.mp4
https://OOOOOOOO.com?url4|Asking StackOverFlow!.mp4
Я посмотрел на многих подобных вопросов уже сделано много подходов, но все результаты то же самое.
Когда я делаю echo ${u#*|}
один, у меня есть выход:
My
file
with
spaces
in
name.mp4
Mixed
up.mp4
.
.
.
Что случилось?
Спасибо! Раньше я использовал 'IFS' для новых строк, но расщепление было выполнено с помощью' read', а не с этими оболочками globs! Не могли бы вы сказать, что случилось с моим? и что такое '' 'после' IFS = '? – revo
@revo: прочитайте это: http://stackoverflow.com/questions/4128235/bash-shell-scripting-what-is-the-exact-meaning-of-ifs-n –
Не связывайтесь с IFS при чтении , Просто сделайте 'while read -d '|' url fname; делай что угодно; done <$ filename' Это сохранит первую часть в 'url', а вторую - в' fname'. Просто укажите «$ fname», когда вы его используете. –