bash: выполнение вывода сценария в виде сценария

Я пишу простой скрипт для генерации всех комбинаций a и b данного длина (скажем, 10). Я хочу иметь возможность делать это в командной строке (я знаю, что это довольно просто, если я просто помещу все в файл сценария bash и выполню его). Однако мне было интересно, возможно ли это сделать без дополнительных файлов. Вот что у меня есть на данный момент:

n=10;
for i in `seq 1 1 $n`; do
    echo "for a$i in {a..b}; do ";
done;
echo -n "echo ";
for i in `seq 1 1 $n`; do
    echo -n '$'"a$i"; done;
    echo;
for i in `seq 1 1 $n`; do
    echo "done;";
done

(я отформатировал код для удобства чтения, но на самом деле все в одной строке, запускаемой из приглашения)

Это дает мне следующий результат:

for a1 in {a..b}; do 
for a2 in {a..b}; do 
for a3 in {a..b}; do 
for a4 in {a..b}; do 
for a5 in {a..b}; do 
for a6 in {a..b}; do 
for a7 in {a..b}; do 
for a8 in {a..b}; do 
for a9 in {a..b}; do 
for a10 in {a..b}; do 
echo $a1$a2$a3$a4$a5$a6$a7$a8$a9$a10
done;
done;
done;
done;
done;
done;
done;
done;
done;
done;

, который является просто отлично. Если я скопирую это и вставлю обратно в командную строку, это сработает как шарм и даст мне результат.

Вопрос в том, как мне сделать это с помощью только начального скрипта, без копирования и вставки перенаправление чего-либо в файлы.

Я пробовал использовать $ () вокруг скрипта, но это дает мне «Нет команды 'для' found '», поскольку на самом деле это не команда, а встроенная функция bash. Я пробовал p произнесла eval где-то перед этим, но я продолжаю получать больше ошибок. Я немного застрял, поэтому буду благодарен за любую помощь.

(Кстати, просто повторюсь, я делаю это более или менее, чтобы просто больше узнать о bash - вот почему я не хочу перенаправлять вывод в файл, а затем выполнять этот файл.Я знаю, как это сделать, но я не знаю, как сделать это из командной строки)

7
задан vmpstr 16 February 2011 в 14:23
поделиться