![Как загрузить все файлы, перечисленные в массиве?](https://rvso.com/image/76402/%D0%9A%D0%B0%D0%BA%20%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D1%8C%20%D0%B2%D1%81%D0%B5%20%D1%84%D0%B0%D0%B9%D0%BB%D1%8B%2C%20%D0%BF%D0%B5%D1%80%D0%B5%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%B2%20%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%B5%3F.png)
Я хочу скачать все файлы вэтот каталог GitHubк /usr/share/enlightenment/data/config
. У меня есть этот скрипт:
L=('e.cfg' 'e_randr.cfg' 'exehist.cfg' 'module.battery.cfg' 'module.clock.cfg' 'module.conf.cfg' 'module.everything-apps.cfg' 'module.everything-files.cfg' 'module.everything.cfg' 'module.gadman.cfg' 'module.ibar.cfg' 'module.notification.cfg' 'module.pager.cfg' 'module.syscon.cfg' 'module.tasks.cfg')
pushd /usr/share/enlightenment/data/config
for i in $L
do
sudo wget -c $JEF/$i #$JEF is defined in my ~/.bashrc script
done
popd
но он просто загружается e.cfg
и всё.
решение1
В bash
or ksh
вам необходимо перебрать все элементы массива с помощью:
for i in "${L[@]}"; do wget ....; done
${L[@]}
будет расширен на все элементы массива L
и for
использован для их итерации.
Если вы используете $L
is bash
или ksh
, то это будет вести себя так, ${L[0]}
т.е. в вашем случае вы получите только первый элемент массива.
решение2
Я сам нашел ответ, посмотрев наМассив переменныхв руководстве для начинающих The Bash.
Вот каким должен быть сценарий:
L=('e.cfg' 'e_randr.cfg' 'exehist.cfg' 'module.battery.cfg' 'module.clock.cfg' 'module.conf.cfg' 'module.everything-apps.cfg' 'module.everything-files.cfg' 'module.everything.cfg' 'module.gadman.cfg' 'module.ibar.cfg' 'module.notification.cfg' 'module.pager.cfg' 'module.syscon.cfg' 'module.tasks.cfg')
pushd /usr/share/enlightenment/data/config
for i in ${L[*]}
do
sudo wget -c $JEF/$i
done
popd
решение3
Как вам такой вариант? Меньше кавычек, скобок, скобок и прочего синтаксиса!:
L='e.cfg e_randr.cfg exehist.cfg etc'
for i in $L
do
echo wget -c "$JEF/$i" #$JEF is defined in my ~/.bashrc script
done
Это самый старый и самый распространенный способ. Больше людей это понимают. Массивы — это расширения, которые я никогда не использовал.