2015-04-29 2 views
0

Я пытаюсь сделать это просто, используя обычные функции Unix (что я понимаю), а не Python (я думаю, что itertools могли бы получить меня там?), Т понять. Итак: несколько небольших списков входов (разделенных запятыми), которые необходимо использовать для генерации всех возможных перестановок. Пример:Создать подстановки из нескольких полей (не используя Python)

Список 1: (Я, ты, мы)

Список 2: (хочу есть, хочу купить, хотят украсть)

Список 3: (банан, гамбургер, мороженное)

Так будет 3 х 3 х 3 = 27 возможных выходов, которые:

Я хочу съесть банан

Я хочу съесть гамбургер

... и так далее

Я уверен, что нет один лайнера, который будет делать это, но есть простой способ добиться этого с помощью простых UniX строительных блоков?

+0

Обычно вопросы об использовании команд оболочки не на тему для SO ... Может быть по теме на одном из * NIX сайтов на SE, но likley должны быть более конкретным там. –

ответ

1

В то время как команды с технически оболочкой не имеют команд, сценарий Bash может сделать это довольно легко с помощью только вложенных циклов.

#!/bin/bash 

list1=("I" "You" "We") 
list2=("want to eat" "want to buy" "want to steal") 
list3=("a banana" "a hamburger" "an icecream") 

for i in "${list1[@]}"; 
    do 
     for j in "${list2[@]}"; 
      do 
       for k in "${list3[@]}"; 
        do 
         echo $i" "$j" "$k 
        done 
      done 
    done 
+0

Большое спасибо dscripka, хорошо работает (после того, как на некоторое время пытается заставить Bash работать на машине Windows). Не могу проголосовать, потому что недостаточно очков. – Simonmdr

Смежные вопросы