{}
Синтаксис расширения скобок Bash позволяет создавать простые перестановки
# echo {b,c,d}{a,e,i,o,u}
ba be bi bo bu ca ce ci co cu da de di do du
Однако мне не ясно, если / как можно использовать это вместе с массивами, за исключением очень неудобного использования $()
echo
иeval
Есть ли простой способ использовать массивы с раскрытием фигурных скобок (перестановка)?
Например, ради, представьте что-то вроде (что, конечно, не работает):
CONS=( b c d )
VOWEL=( a e i o u )
echo {${CONS[@]}}{${VOWEL[@]}}
GNU bash, version 4.2.24
Output,root@router:~# echo {${CONS[@]}}{${VOWEL[@]}} {b c d}{a e i o u}.
если вы хотите другое, дайте нам знать .. `ba be bi bo bu ca ce ci co cu da de di do du
.Ответы:
Вы можете использовать eval с
IFS=,; "${array[*]}"
(который соединяет значения запятыми) или только два для цикла:источник
Это возможно с
zsh
:Или
es
:С помощью
bash
илиksh93
, вы должны сделать что-то запутанное, как:источник
eval
или.
), хотя.eval "echo {$(printf ',%s' "${CONS[@]}" "${VOWEL[@]}" | tail -c+2)}"
(Не работает для одного элемента.)Весело, но, наверное, не самое лучшее.
источник