1.正規表現 - ハードコーディングされたインデックス

1.正規表現 - ハードコーディングされたインデックス

私はMacOSXで端末を使用しています。

私はこれを読んだ入り口Unixの配列を紹介します。次のように配列にアクセスしようとしましたが、失敗しました。

a=(1,2) && echo "${a[0]}"

出力は次のとおりです。

1,2

それが私が期待していたものです1

どうすればいいですか?

答え1

a=('1' '2') && echo "${a[0]}"これが良いでしょう。

あなたのバージョンでは、「1,2」の値を含む単一要素配列のみを作成しました。

答え2

インデックス配列の要素にアクセスするときに覚えておくべき3つの点は次のとおりです。

1.正規表現 - ハードコーディングされたインデックス

arr=(one two three)
element_0="${arr[0]}"

2. 一般式 - 変数に格納されたインデックス

arr=(it is cool to write readable code)
for ((i=0; i < ${#arr[@]}; i++)); do
    current_element=${arr[i]} # note, no '$' necessary before i
done

3. 配列要素を含む算術式

arr=(100 150 350)
((sum_of_first_two = arr[0] + arr[1])) # no need for '{ }'

答え3

たとえあなたの実際質問は、質問のタイトルが表すものとは異なります(配列アイテムにアクセスする方法は正確です)。以下は、bash配列の使用方法の一般的な説明です。

~からバッシュリファレンスマニュアル

参照配列のすべての要素を使用できます${name[subscript]}。シェルのファイル名拡張演算子との競合を防ぐには、中かっこが必要です。

...

下付き文字は、数値として評価する必要がある算術式として扱われます。

つまり、$下付き文字は必要ありません。

インデックス配列要素を参照するために使用される下付き文字がゼロより小さい数値として評価されると、配列の最大インデックスより大きい1に基づいて解釈されるため、負のインデックスは配列の末尾から逆に計算されます。 1 は要素の終わりを示します。

たとえば、

declare -i i=1 # -i declares integer
${arr[i*2]} 
${arr[-1]} #returns last element
${arr[0]}  #first element is at index 0

関連情報