Как указано в комментариях, есть две почти идентичные команды, по одной для каждой оболочки.
# bash
IFS=, read -ra array <<< "$csv"
# zsh
IFS=, read -rA array <<< "$csv"
Синтаксис один и тот же; единственная разница в том, используете ли вы a
или A
в качестве опции для read
. Я бы порекомендовал добавить условный оператор, который определяет, какая оболочка выполняет сценарий, а затем использовать переменную для хранения правильной опции.
if [ -n "$BASH_VERSION" ]; then
arr_opt=a
elif [ -n "$ZSH_VERSION" ]; then
arr_opt=A
fi
IFS=, read -r"$arr_opt" array <<< "$csv"
Проверка непустых параметров версии не является надежной, но она должна будь достаточно хорош.