![¿Cómo descargo todos los archivos enumerados en una matriz?](https://rvso.com/image/76402/%C2%BFC%C3%B3mo%20descargo%20todos%20los%20archivos%20enumerados%20en%20una%20matriz%3F.png)
Quiero descargar todos los archivos eneste directorio de GitHuba /usr/share/enlightenment/data/config
. Tengo este 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
pero simplemente se descarga e.cfg
y listo.
Respuesta1
En bash
o ksh
, necesitas iterar sobre todos los elementos de la matriz con:
for i in "${L[@]}"; do wget ....; done
${L[@]}
se expandirá a todos los elementos de la matriz L
y for
se utilizará para iterar sobre ellos.
Si usa $L
is bash
o ksh
, se comportará como, ${L[0]}
es decir, en su caso, obtendrá solo el primer elemento de la matriz.
Respuesta2
Yo mismo descubrí la respuesta mirandovariables de matrizen La guía para principiantes de Bash.
Este es el guión que debería 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
Respuesta3
¿Qué tal esto? ¡Menos comillas, paréntesis, corchetes y otra sintaxis!:
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 es la forma más antigua y común de hacerlo. Más gente entiende esto. Las matrices son extensiones que nunca he usado.