いくつかのファイルを引数として使用して、起動したい bash スクリプトがあります。次に、そのリストのn 番目ごとのファイルを配列に追加する必要があります。
ループを使おうと思ったのfor
ですが、一度に二つしかできないようです。もちろん、結果のコードはできるだけシンプルで小さくしたいと思っていますが、唯一の前提条件は、システムに付属のツールを使用して bash で実行する必要があるということです。
間接変数参照を使用して、引数を数値で参照できます。
selectedargs=()
n=4
for ((i=1; i<$#; i+=n)); do
selectedargs+=("${!i}")
done
ファイル名は引数であるためshift
、不要な引数を破棄するために使用できます。
#!/bin/bash
files=()
n=8
while (( $# > 0 )); done
files+=( $1 )
shift $n || shift $#
done
その引数が残りの引数の数よりも大きい場合は何もしないため、追加shift
が必要です。shift
for
ループはかなり適切だと思います。ここで、 forn=9
では、0 から 99 までの数字を含む配列を作成し、次に for ループを使用して、元の配列の 9 桁ごとに含む配列を作成します。
x=( {0..99} )
y=()
n=9
for ((i=0; i<${#x[@]}; i=i+n)); do
y+=( "${x[i]}" )
done