したがって、次のコードは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: $position
index
i
ラッパー関数に渡すとき。
たとえば、次のようになります。
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でこのようなことをする方法が気になります。