Как загрузить все файлы, перечисленные в массиве?

Как загрузить все файлы, перечисленные в массиве?

Я хочу скачать все файлы вэтот каталог 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

В bashor kshвам необходимо перебрать все элементы массива с помощью:

for i in "${L[@]}"; do wget ....; done

${L[@]}будет расширен на все элементы массива Lи forиспользован для их итерации.

Если вы используете $Lis 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

Это самый старый и самый распространенный способ. Больше людей это понимают. Массивы — это расширения, которые я никогда не использовал.

Связанный контент