![Wie lade ich alle in einem Array aufgelisteten Dateien herunter?](https://rvso.com/image/76402/Wie%20lade%20ich%20alle%20in%20einem%20Array%20aufgelisteten%20Dateien%20herunter%3F.png)
Ich möchte alle Dateien herunterladen indieses GitHub-Verzeichniszu /usr/share/enlightenment/data/config
. Ich habe dieses Skript:
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
aber es wird nur heruntergeladen e.cfg
und das wars.
Antwort1
In bash
oder ksh
müssen Sie über alle Elemente des Arrays iterieren mit:
for i in "${L[@]}"; do wget ....; done
${L[@]}
wird auf alle Elemente des Arrays erweitert L
und for
dient zur Iteration über diese.
Wenn Sie „ $L
is“ bash
oder „ verwenden ksh
, verhält es sich so ${L[0]}
, dass Sie in Ihrem Fall nur das erste Element des Arrays erhalten.
Antwort2
Die Antwort habe ich selbst herausgefunden, indem ich mir angesehen habeArray-Variablenim Bash-Anfängerhandbuch.
So sollte das Skript aussehen:
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
Antwort3
Wie wäre es damit? Weniger Anführungszeichen, Klammern und andere Syntax!:
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
Dies ist die älteste und gebräuchlichste Vorgehensweise. Die meisten Leute verstehen das. Arrays sind Erweiterungen, die ich nie verwendet habe.