Как я могу скользить несколько переменных по трубе в то время как (Bash)? - PullRequest
0 голосов
/ 31 декабря 2018

Я использую bash для загрузки файла и автоматического изменения имени файла через wget, но когда я использую | (это space pipe space) для различения переменных, он всегда читает первую часть имени файла с пробелом

Вот мой сценарий, я использую while read -r fileName ' | ' url для чтения моего файла download.list

#!/usr/bin/env bash

set -e

IFS=' | '    

while read -r fileName url
do
    wget $url -O $fileName
done < download.list

exit 0

вот пример текста в моем download.list MR HH GD | https://example/xxxx.zip Я ожидаю, что получу MR HH GD.zip,но это на самом деле дает мне это: ME.zip

1 Ответ

0 голосов
/ 31 декабря 2018

Я не знаю, как вы прошли команду чтения.В разделе «ВСТРОЕННЫЕ КОМАНДЫ ОБОЛОЧКИ» bash (1) команда чтения определена как принимающая имена переменных в качестве аргументов, а не простой текст.

Вы можете использовать IFS, например, так, но вам придетсяудалите все ненужные пробелы самостоятельно.

while IFS='|' read -r fileName url
do
    echo ">$fileName<"
    echo ">$url<"
done < download.list

MR HH GD | https://example/xxxx.zip в вашем файле download.list выведет

>MR HH GD <
> https://example/xxxx.zip<
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...