特定の配列要素の選択

特定の配列要素の選択

"$@"先ほど読み始めましたが、配列の要素を具体的"$*"に指すことが可能かどうか疑問に思います。"$@"ループを使用せずにループ内の要素番号3を選択できるようにしたいです"$@"。これ"$1+@"や同様の方法がありますか?すでに知っているが、について"${1}"具体的に知りたいです。検索してみましたが、これに関連するコンテンツが見つかりませんでした。"$@""$*"

答え1

位置パラメータは配列ではありません。
設定する方法はを介してですset。他の配列にはこれは必要ありません。

$ set -- one two t33 f44
$ printf '%s\n' "$@"
one
two
t33
f44

ただし、少なくともbash(およびkshとzsh)では簡単に選択できます。

$ set -- one two t33 f44
$ echo "${@:2:1}"
two
$ echo "${@:2:2}"
two t33

答え2

$@配列ではありません。これはパラメータのリストです。 Bashでは、配列を作成してその中の値で初期化し、$@インデックスを使用できます。

declare -a foo=($@)

echo ${foo[2]}

配列の索引付けは0から始まるので、上記は3番目の引数をスクリプトに出力します。

答え3

本質的にはできません。問題は$*ところがそうでは$@ありません。ソート;簡単変わりやすい。したがって、インデックスを作成できません。

その値は単なる文字列であり、わずかに異なる方法で定義されます。などを使用する$1と、$2個々のコンポーネントにアクセスできます。

関連情報