いくつかのコマンドラインパラメータをユーザーの配列に保存する

いくつかのコマンドラインパラメータをユーザーの配列に保存する

私にはこんなことをする能力があり、

array=(2 46 7 4 2 1 1 1 23 4 5)
store=(${array[*]:5:5})
echo ${store[@]}  # print 1 1 1 23 4 5

これで、ユーザー配列から位置5の5つの要素を抽出するのではなく、次のものを抽出する必要があります。5のコマンドラインパラメータ以来。このようなことを試しましたが、出力は空です。

store=(${$[*]:5:5})  # <----------------- Something to be changed here?
echo ${store[@]}  # EMPTY OUTPUT

どんな助けでも、場所でnパラメータを保存する方法配列で続行しますか?

答え1

bash(およびzshおよびでksh93一般的な形式は次のとおりです。パラメータ拡張または、Substring Expansion次のようになります。

${parameter:offset:length}

省略すると、引数の終わりlengthまで移動します。offset

あなたの場合:

array=(2 46 7 4 2 1 1 1 23 4 5)
store=( "${array[@]:5}" )
printf '%s\n' "${store[@]}"

要素から6th最後の要素まで生成されます。

そして$@

printf '%s\n' "${@:5}"

$5位置引数の終わりまで生成されます。

split+globまた、演算子がその要素に適用されないようにするには、配列変数を引用符で囲む必要があります。


Pass zsh、他の構文を使用できます。

print -rl -- $argv[5,-1]

関連情報