Должен ли я приводить переменные при выполнении расширения параметра Bash?Цитаты в расширении переменной замещения шаблона Bash
Например, в случае, если "${E}"
быть в кавычках?
(
E="-END"
X=(ABC 123 "ABC 123")
X=("${X[@]/%/"${E}"}")
IFS=$'\n'
echo "${X[*]}"
)
Я заметил на 4.2 версии Баша это приведет к следующему выходу
ABC"-END"
123"-END"
ABC 123"-END"
Но на 4.3 версии Баша это приведет к следующему выходу
ABC-END
123-END
ABC 123-END
Это ошибка, которая была исправлена?
Редактировать. Изменено "$E"
к "${E}"
удивительным. что бы вы сделали? использовать цитаты? – Jon
@JamesAndrews Если вам не нужны кавычки в выводе, то не указывайте '$ E', а если вы хотите кавычки, то избежите цитат' \ '$ E \ "'. Это должно быть довольно переносимым в разных версиях. Другая возможность - использовать опцию оболочки 'compat42', чтобы гарантировать одинаковое поведение в разных версиях (но тогда вам нужно будет проверить, что ваша версия Bash ≥4.2). –