1

これは ksh93 で機能しますが、ksh88 で同様のコードを作成するにはどうすればよいですか?

$ typeset -A age
$ age["bob"]=42
$ age["alice"]=31
$ print ${age[bob]}
42
4

2 に答える 2

1

簡単な答え: できません。ksh88 は連想配列を処理しません。

より長い答え:それはあなたが何をしようとしているのかによって異なります。次の回避策は機能するはずですが、シナリオには適していない可能性があります。

integer bob=0
integer alice=1
age[bob]=42
age[alice]=31

assoc を実装していないシェルをハックすることができます。配列 (たとえば、eval を使用) ですが、きれいでも高速でもありません。

于 2013-08-14T16:12:36.150 に答える
1

実際、ksh88 は連想配列をサポートしていません。

awk スクリプトのラッパーとして ksh88 を使用します。

awk 'BEGIN {
  age["bob"]=42
  age["alice"]=31
  print age["bob"]
}'
42

ksh88 をホストし、ksh93 をホストしないシステムには、マッピングをサポートする他の言語がある場合があります。

于 2013-08-15T20:31:22.327 に答える