Массив + = (строка) возвращает синтаксическую ошибку: неожиданная строка на mksh R39

В сценарии оболочки Korn я объявляю массив, в который пытаюсь добавить строку:

#!/bin/ksh
array=()
array+=("string")

При выполнении сценария (ksh scriptName или ./scriptName) я получаю

./scriptName[3]: syntax error: '"string"' unexpected

Версия KSH у меня @(#)MIRBSD KSH R39 2009/08/01.

Почему я получаю эту ошибку? Я видел этот аналогичный вопрос, но, похоже, это не проблема.


person MoebiusCorzer    schedule 07.10.2018    source источник


Ответы (1)


Изучив документацию по mksh оболочке и ее истории, кажется, что оператор добавления массива выполняет < em> не, похоже, поддерживается в R39, но только с R40 и далее

Цитата из журнала изменений R40:

_5 _: .. Теперь поддерживаются обозначения x+=y и x+=(y z) для добавления к переменным и (!MKSH_SMALL) массивам.

mksh R40 - основной выпуск всего:

[tg] Добавить += для объединения скаляров и добавления в массивы

Не думаю, что это было поддержано на R39. Порекомендуйте перейти на R40, который, кажется, поддерживает гораздо больше функций, чем тот, который у вас есть.

person Inian    schedule 07.10.2018