zshで連想配列を使用すると、一致するものが見つかりません。

zshで連想配列を使用すると、一致するものが見つかりません。

no matches foundzshでmapを使用すると、この問題が発生しました。

#!/bin/zsh

declare -A map=(["8761"]="Eureka服务" ["11001"]="用户微服务")

なぜこれが起こり、どのように解決するのですか?エラーは次のとおりです。

~/source/dolphin/dolphin-scripts/bash/tool on  master! ⌚ 20:57:52
$ ./batch-terminal-process.sh
./batch-terminal-process.sh:14: no matches found: [8761]=Eureka服务

答え1

zshと構文はサポートされていませんtypeset -A array([key]=value ...)kshbash

代わりに、キーと値を交互に使用して連想配列を初期化する必要があります。

% declare -A map=(8761 "Eureka服务" 11001 "用户微服务")
% echo ${map[8761]}
Eureka服务

答え2

Billyの叔父が言ったように、zshはこの構文を理解していません。

ただし、zsh> = 5.5にサポートが追加されました(参照:変更ログ)これでコードスニペットが機能します。

関連情報