Как уже отмечалось, лучше проверить, является ли текущая оболочка ksh, а не существует ли какой-либо файл. Затем, хотя предложение else может не выполняться в ksh, ksh анализирует весь составной оператор перед выполнением соответствующих частей. PD КШ v5.2.14 жалуется «КШ: ошибка синтаксиса:` (»неожиданной» при разборе своего еще пункта, в то время как MIRBSD КШ R43 можно разобрать и выполнить этот синтаксис без ошибок
Вот функция, которая работает в КШ & Баше,. с помощью Eval, чтобы избежать проблем синтаксического анализа:?.
# example invocation:
# A B [C D ...]
# sets B[0]=C, B[1]=D, ...
A()if [ "$KSH_VERSION" ]
then set -A $1 "${@:2}"
else eval $1='("${@:2}")'
fi
Какую версию Баш вы используете – dougEfresh
'arrayexample = ('а' 'б' 'с')' должен работать как '' ksh' и bash' The ошибка, которую вы видите, появляется из любой оболочки, но из оболочки, которая не поддерживает массивы. – chepner
@dougEfresh version 4.2.20 – Mansuro