Раскрытие скобки {1..2}
происходит до раскрытия переменной, поэтому сделать это невозможно без eval
.
. Просто переберите два массива и создайте все возможные комбинации
for i in "${arr1[@]}"; do
for j in "${arr2[@]}"; do
echo "$i$j"
done
done
Или вы можете использовать eval
. Чтобы сделать это безопасно, используйте printf %q
, чтобы сгенерировать надежно цитируемые версии содержимого вашего массива, например:
printf -v arr1_str '%q,' "${arr1[@]}"; arr1_str=${arr1_str%,}
printf -v arr2_str '%q,' "${arr2[@]}"; arr2_str=${arr2_str%,}
eval "printf '%s\n' {${arr1_str}}{${arr2_str}}"
..., которые вы можете видеть работающими (с некоторыми намеренно враждебными / хитрыми примерами данных) в https://ideone.com/HunmC3