ループを実行して、ループ内で前のアイテムと次のアイテムを取得したいと思います。
現在、私は次のループを使用しています。
for file in $dir;do
[...do some things...]
done
Cのように、たとえばfile [i-1] / file [i + 1]を実行して、前のアイテムと次のアイテムを取得できますか?これを行う簡単な方法はありますか?
declare -a files=(*)
for (( i = 0; i < ${#files[*]}; ++ i ))
do
echo ${files[$i-1]} ${files[$i]} ${files[$i+1]}
done
最初の反復では、インデックス-1は最後の要素を出力し、最後の反復では、インデックスmax+1は何も出力しません。
これを試して:
previous=
current=
for file in *; do
previous=$current
current=$next
next=$file
echo $previous \| $current \| $next
#process item
done
previous=$current
current=$next
next=
echo $previous \| $current \| $next
#process last item