2008-12-04 6 views
0

Недавно я наткнулся на стену, выполняя некоторое программирование оболочки bash, где ассоциативный массив решил бы мои проблемы. Я искал возможности KornShell (ksh) и узнал, что поддерживает ассоциативные массивы, поэтому я установил pdksh Cygwin (Public Domain KornShell).Поддерживает ли pdksh (public domain kornShell) ассоциативные массивы?

Однако при попытке создать ассоциативный массив в установленном порядке (typeset -A varName), я получил следующие ошибки, поэтому я начинаю подозревать, что pdksh не поддерживает ассоциативные массивы.

./find_actions.ksh: line 2: typeset: -A: invalid option 
typeset: usage: typeset [-afFirtx] [-p] name[=value] ... 

Guess I будет рассматривать Perl вместо этого, но я действительно хотел хороший повод, чтобы узнать диалект/язык нового для меня.

ответ

1

Взгляните на ksh93, он поддерживает ассоциативные массивы и является гораздо более полной/правильной реализацией ksh.

См: kornshell.com

+0

Кажется, что не доступно в cygwin; pdksh - единственная ksh-подобная оболочка. – Alastair 2008-12-04 21:51:39

0

Почему бы не просто использовать bash? Он может не иметь явных ассоциативных массивов, но вы можете fake them.

В качестве альтернативы, zsh имеет excellent associative array support.

+0

bash version 4 [имеет ассоциативные массивы] (http://www.gnu.org/software/bash/manual/bashref.html#Arrays). – 2011-07-11 14:24:45

1

pdksh не имеет никакой поддержки для ассоциативных массивов; это запланированная и определенная особенность его преемника, мкш (как только я обойдусь, чтобы фактически реализовать его, то есть ... извините за то, что он замедлился с этим).