
すべてのファイルをダウンロードしたいです。この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
isbash
またはitを使用すると、あなたの場合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
これは最も古く、最も一般的な方法です。より多くの人々がこれを理解しています。配列は私が使ったことのない拡張です。