Я хотел бы знать следующее;
- Почему данный нерабочий пример не работает.
- Если есть какие-либо другие более чистые методы, чем те, которые приведены в рабочем примере.
Нерабочий пример
> ids=(1 2 3 4);echo ${ids[*]// /|}
1 2 3 4
> ids=(1 2 3 4);echo ${${ids[*]}// /|}
-bash: ${${ids[*]}// /|}: bad substitution
> ids=(1 2 3 4);echo ${"${ids[*]}"// /|}
-bash: ${"${ids[*]}"// /|}: bad substitution
Рабочий пример
> ids=(1 2 3 4);id="${ids[@]}";echo ${id// /|}
1|2|3|4
> ids=(1 2 3 4); lst=$( IFS='|'; echo "${ids[*]}" ); echo $lst
1|2|3|4
В контексте строка с разделителями, которая будет использоваться в команде sed для дальнейшего анализа.