![Como faço o download de todos os arquivos listados em um array?](https://rvso.com/image/76402/Como%20fa%C3%A7o%20o%20download%20de%20todos%20os%20arquivos%20listados%20em%20um%20array%3F.png)
Quero baixar todos os arquivos emeste diretório GitHubpara /usr/share/enlightenment/data/config
. Eu tenho esse script:
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
mas é só baixar e.cfg
e pronto.
Responder1
Em bash
or ksh
, você precisa iterar todos os elementos do array com:
for i in "${L[@]}"; do wget ....; done
${L[@]}
será expandido para todos os elementos da matriz L
e for
é usado para iterar sobre eles.
Se você usar $L
is bash
ou ksh
, ele se comportará como, ${L[0]}
ou seja, no seu caso, você obterá apenas o primeiro elemento do array.
Responder2
Eu mesmo descobri a resposta olhando paraVariáveis de matrizno Guia para Iniciantes do Bash.
Isto é o que o script deveria ser:
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
Responder3
Que tal agora? Menos aspas, parênteses e colchetes e outras sintaxes!:
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
Esta é a maneira mais antiga e comum de fazer isso. Mais pessoas entendem isso. Matrizes são extensões que nunca usei.