如何下載數組中列出的所有文件?

如何下載數組中列出的所有文件?

我想下載所有文件這個 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[@]}將擴展到數組的所有元素Lfor用於迭代這些元素。

如果您使用$Lis bashor ksh,它的行為就像${L[0]}您的情況一樣,您將只獲得數組的第一個元素。

答案2

我自己透過查看找到了答案數組變數在 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

這是最古老也是最常見的方法。更多人明白這一點。數組是我從未使用過的擴充。

相關內容