如何下载数组中列出的所有文件?

如何下载数组中列出的所有文件?

我想下载所有文件这个 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

这是最古老也是最常见的方法。更多人明白这一点。数组是我从未使用过的扩展。

相关内容