Bash에서 동적으로 이름이 "i"인 중첩 for 루프를 만드는 방법

Bash에서 동적으로 이름이 "i"인 중첩 for 루프를 만드는 방법

따라서 다음 코드는 for 루프를 래핑하고 각 항목에 대해 무언가를 인쇄할 수 있습니다.

iterate() {
  local array=$1

  shift

  for i in $array; do
    $*
  done
}

iteratecallback() {
  echo item: $i
}

data=$(ls)
iterate "$data" iteratecallback

하지만 제가 하고 싶은 것은 예를 들어 i를 최상위 수준 echo item: $i에 두고 다음 수준의 중첩을 수행한 다음 세 번째 수준의 중첩을 수행하는 것입니다. 기본적으로 이러한 인덱스 변수의 이름을 원하는 대로 지정할 수 있습니다.echo item: $positionindexi래퍼 함수에 전달할 때.

예를 들어 다음과 같습니다.

iterate() {
  local customname=$1
  local array=$2

  shift

  for $customname in $array; do
    $*
  done
}

iteratecallback() {
  echo item: $position

  data2=$(ls)
  iterate index "$data2" iteratecallback2
}

iteratecallback2() {
  echo item: $index in $position
}

data=$(ls)
iterate position "$data" iteratecallback

Bash에서 이와 같은 작업을 수행하는 방법이 궁금합니다.

관련 정보