配列にリストされているすべてのファイルをダウンロードするにはどうすればよいですか?

配列にリストされているすべてのファイルをダウンロードするにはどうすればよいですか?

すべてのファイルをダウンロードしたいこの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またはでは、ksh次のようにして配列のすべての要素を反復処理する必要があります。

for i in "${L[@]}"; do wget ....; done

${L[@]}配列のすべての要素に展開されLforそれらを反復処理するために使用されます。

または$Lを使用すると、つまり、あなたの場合は配列の最初の要素のみが取得されるとして動作します。bashksh${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

これは最も古く、最も一般的な方法です。多くの人がこれを理解しています。配列は私が使用したことのない拡張機能です。

関連情報