![配列にリストされているすべてのファイルをダウンロードするにはどうすればよいですか?](https://rvso.com/image/76402/%E9%85%8D%E5%88%97%E3%81%AB%E3%83%AA%E3%82%B9%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
すべてのファイルをダウンロードしたいこの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[@]}
配列のすべての要素に展開されL
、for
それらを反復処理するために使用されます。
または$L
を使用すると、つまり、あなたの場合は配列の最初の要素のみが取得されるとして動作します。bash
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
これは最も古く、最も一般的な方法です。多くの人がこれを理解しています。配列は私が使用したことのない拡張機能です。