我想下载所有文件这个 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
在bash
or中ksh
,您需要使用以下方法迭代数组的所有元素:
for i in "${L[@]}"; do wget ....; done
${L[@]}
将扩展到数组的所有元素L
并for
用于迭代这些元素。
如果您使用$L
is bash
or 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
这是最古老也是最常见的方法。更多人明白这一点。数组是我从未使用过的扩展。