Массив Декартово произведение в bash

Есть ли способ генерировать декартово произведение массивов без использования петель в bash?

Можно использовать фигурные скобки, чтобы сделать аналогичную вещь:

echo {a,b,c}+{1,2,3} a+1 a+2 a+3 b+1 b+2 b+3 c+1 c+2 c+3 

но мне нужно использовать массивы в качестве входных данных, и самые очевидные трюки не позволяют мне.

  • Команда scp над ssh без пароля в скрипте
  • Подождите, пока процесс переднего плана испустит строку, затем отправьте на задний план
  • поиск файла внутри скрипта
  • Переменная переменной оболочки gnuplot и массивы
  • Команда запускается из оболочки, но не запускается из сценария.sh
  • Нужен скрипт, который генерирует файлы из слов в одном текстовом файле
  • Установка XDG_DATA_HOME и XDG_CONFIG_HOME для компиляции / для каждой программы
  • Как удалить первые n строк файла ascii с помощью команд оболочки?
  • One Solution collect form web for “Массив Декартово произведение в bash”

    Вы можете использовать расширение скобки. Но это уродливо. Вам нужно использовать eval , поскольку расширение расширений происходит до расширения переменной (array). И "${var[*]}" с IFS=, для создания запятых.

    Рассмотрим команду для создания строки

     echo {a,b,c}+{1,2,3} 

    Предполагая, что массивы называются letters и numbers , вы можете сделать это, используя нотацию "${var[*]}" с IFS=, чтобы вставлять запятые между элементами вместо пробелов.

     letters=(abc) numbers=(1 2 3) IFS=, echo {"${letters[*]}"}+{"${numbers[*]}"} 

    Какие печатные издания

     {a,b,c}+{1,2,3} 

    Теперь добавьте eval , поэтому он запускает эту строку как команду

     eval echo {"${letters[*]}"}+{"${numbers[*]}"} 

    И вы получаете

     a+1 a+2 a+3 b+1 b+2 b+3 c+1 c+2 c+3 
    Interesting Posts

    Microsoft, похоже, блокирует электронную почту из пользовательского домена для любого адреса, кроме одного

    Какое распределение для облегченного сервера?

    Прерывистые сетевые подключения – CentOS

    Что случилось с тем, как я использую PV?

    множественное преобразование bam to bed с использованием постельных принадлежностей

    Как загрузить все файлы, связанные с веб-сайтом с помощью wget

    Есть ли способ остановить скринсейвер только на клавиатуре?

    использование tee для вывода промежуточных результатов в stdout вместо файлов

    Как извлечь строки между двумя шаблонами в одном столбце?

    Создание правила UFW, позволяющего приложению использовать динамические порты

    Как настроить правила ICMP iptables на маршрутизаторе?

    Как открыть любой файл через командную строку?

    Замените передачу веб-камеры изображением с жесткого диска

    Лучший способ установки удаленной папки

    Как драйверы GPU на самом деле работают в Linux?

    Linux и Unix - лучшая ОС в мире.