Как кормить подстановку команды в команду «Да»?

Если я бегу Да, «Я люблю сыр» в Bash, я получу бесконечный выход Из

I like cheese
I like cheese
...
...

Тем не менее, я хотел бы распечатать случайную строку на каждой строке и мыслей с помощью Да может быть способ добраться туда. Итак, я попробовал эту команду:

yes `echo $(tr -dc A-Za-z0-9 </dev/urandom | head -c 10)`

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

`echo $(tr -dc A-Za-z0-9 </dev/urandom | head -c 10)`

оценивает, что является случайной строкой (например, d8ptvezyyyi )

Так что результат и бесконечный выпуск:

d8pTVeZYyi
d8pTVeZYyi
d8pTVeZYyi
...

Как я могу сделать эту замену команды на каждой строке? Так что результат:

d8pTVeZYyi
HCmjUpGOIq
K3e8aquaiK
mMJBZYkHJM
...

P.S. Общая цель состоит в том, чтобы иметь возможность генерировать огромные текстовые файлы со случайной строкой на каждой строке в разумное количество времени. Те, кто нужен для тестовых целей.

0
задан 6 March 2021 в 03:54

1 ответ

Проблема в том, что выражение echo $ (tr -dc a-za-z0-9 Оценивался только один раз, в данный момент, когда да - лакнуд, поэтому все последующие итерации только что распечатывают результат этого выражения.

Некоторые другие варианты:

while true; do
    tr -dc A-Za-z0-9 </dev/urandom | head -c 10
    echo ""
done

или

while true; do
    rand=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 10)
    echo "$rand"
done

или, лучше, похищенные из @ комментарий Steeldriver ):

tr -dc A-Za-z0-9 </dev/urandom | fold -w10
1
ответ дан 18 March 2021 в 23:28

Другие вопросы по тегам:

Похожие вопросы: