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に置き、次のレベルのネストを実行してから、3番目のレベルのネストを実行することです。デフォルトでは、これらのインデックス変数の名前を必要に応じて指定できます。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でこのようなことをする方法が気になります。

関連情報