'array = X'は常にbashの最初の要素に割り当てられていますか?

'array = X'は常にbashの最初の要素に割り当てられていますか?

'array = X'は常にbashの最初の要素に割り当てられていますか?そうでない場合は、man bashページの次のテキストを理解するために「はい」が必要になることがあります。

インデックス配列に割り当てるときにオプションの括弧と下付き文字を指定すると、そのインデックスが割り当てられます。それ以外の場合、割り当てられた要素のインデックスは、ステートメントによって割り当てられた最後のインデックスに1を加えたものです。

してください。

ベストアンサー1

arrayと同じでarray[0]、と$array同じです${array[0]}。 Bashでは、実際に配列では0なくてもarray参照用のインデックスを使用することが有効です。ただし、インデックス(0または0以外)を使用して割り当てると、変数は配列に変換されます。

$ array=foo
$ declare -p array         
declare -- array="foo"          # it's not an array
$ echo "${array[0]}"            # we can get the value through index 0
foo
$ declare -p array
declare -- array="foo"          # it's still not an array

$ array[1]=bar
$ declare -p array
declare -a array=([0]="foo" [1]="bar")  # now it is
$ echo $array                           # though this still works..
foo

マニュアルページの一部/手動引用された専門は次のとおりです。

配列は型の複合割り当てを使用して割り当てられます name=(value1 ... valuen)。ここで、各値は形式です [subscript]=string。インデックス配列の割り当てには文字列のみが必要です。インデックス配列に割り当てるときにオプションの括弧と下付き文字を指定すると、そのインデックスが割り当てられます。それ以外の場合、割り当てられた要素のインデックスは、ステートメントによって割り当てられた最後のインデックスに1を加えたものです。インデックスは0から始まります。

これは次の課題を表します。

array=(foo bar)
array=([0]=foo [1]=bar)

上記の2つは、インデックス付けがゼロから始まり(下)、インデックス付けされていない値が連続したインデックスに入れられるため、同じです。同様に、次の2つの割り当ては同じです。

array=([123]=foo [124]=bar)
array=([123]=foo bar)

いくつかの段落の後には、インデックス0と非インデックス参照の同一性が明示的に述べられている。

下付き文字なしで配列変数を参照することは、下付き文字で配列を参照するのと同じです0。有効な添え字を使用した変数への参照はすべて有効で、必要に応じてbashは配列を生成します。

おすすめ記事