배열에 나열된 모든 파일을 다운로드하는 방법은 무엇입니까?

배열에 나열된 모든 파일을 다운로드하는 방법은 무엇입니까?

모든 파일을 다운로드하고 싶습니다.이 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요소를 반복하는 데 사용됩니다.

$Lis bash또는 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

이것은 가장 오래되고 가장 일반적인 방법입니다. 더 많은 사람들이 이것을 이해합니다. 배열은 제가 사용해본 적이 없는 확장입니다.

관련 정보