

macOSのzshでシェルススクリプトを書いているのですが、連想配列（declareコマンド）を使う時 `-A`
オプションを使うというサンプルがインターネットには多く見られますが、実際に使用してみると、オプションが存在しないと言われます。

さらに、1〜9までのキーは参照されるのですが、0やアルファベットのキーは参照されず、一番最後の要素が参照されてしまいます。

以上を踏まえ、以下の２点が知りたいです。

  1. `declare` の `-A` オプションはどのシェル (bashなど) で有効なオプションなのでしょうか？
  2. 最後の要素が参照されるのはどうしてなのか

実際のソースは以下の通りです。

[code]

    declare sample=(
        ['1']="100 100"
        ['2']="200 200"
        ['3']="300 300"
        ['4']="400 400"
        ['5']="500 500"
        ['6']="600 600"
        ['0']="00000 00000"
        ['A']="AAAAA AAAAA"
        ['B']="BBBBB BBBBB"
    )
    
    echo ${sample['1']}
    echo ${sample['2']}
    echo ${sample['3']}
    echo ${sample['4']}
    echo ${sample['5']}
    echo ${sample['6']}
    echo ${sample['0']}
    echo ${sample['A']}
    echo ${sample['B']}
    
[/code]

実行結果

[code]

    100 100
    200 200
    300 300
    400 400
    500 500
    600 600
    BBBBB BBBBB
    BBBBB BBBBB
    BBBBB BBBBB
    
[/code]


CC BY-SA 4.0
2021-01-15T21:22:52.627
73331
2023-01-15T17:08:26.143
2021-05-31T05:47:50.553
3060
43541
question
macos shellscript zsh
zshで連想配列を使用したいのですが、うまくいきません。


Macのbashはバージョンが低いのでbrewから5系をダウンロードしてインストールし  
`#!/usr/local/bin/bash` でシェルスクリプトを作る必要があります。  
Macの3系の古いbashだと空白があると上手く動作しませんね。

もしくはzshの `typeset -A` で連想配列を作る必要があります。


CC BY-SA 4.0
2021-05-31T05:27:31.217
76220
2021-05-31T08:31:41.720
2021-05-31T08:31:41.720
3060
45577
73331
answer