インデックスが常に1..5の場合、これは機能するはずです
b=(${b[a[1-1]-1]} ${b[a[2-1]-1]} ${b[a[3-1]-1]} ${b[a[4-1]-1]} ${b[a[5-1]-1]})
aが0..4のインデックスに登録されていると、より簡単になります。
b=(${b[a[0]]} ${b[a[1]]} ${b[a[2]]} ${b[a[3]]} ${b[a[4]]})
それ以外の場合は、次のように3番目の配列pを作成すると便利です。ここで、pは{0 .. $((n-1))}の順列です。
p=(3 0 1 2 4)
a=(${a[p[0]]} ${a[p[1]]} ${a[p[2]]} ${a[p[3]]} ${a[p[4]]})
b=(${b[p[0]]} ${b[p[1]]} ${b[p[2]]} ${b[p[3]]} ${b[p[4]]})
配列を任意のサイズにすることができる場合
atmp=("${a[@]}")
btmp=("${b[@]}")
for ((i=0;i<n;i++)); do
a[i]=${atmp[p[i]]}
b[i]=${btmp[p[i]]}
done
これは順列の方向を変える可能性があることに注意してください:
atmp=("${a[@]}")
btmp=("${b[@]}")
for ((i=0;i<n;i++)); do
a[p[i]]=${atmp[i]}
b[p[i]]=${btmp[i]}
done