Задать вопрос

Как сгенерировать на bash фиксированню строку из числа?

нужно выводить последовательно строку вида "A0000".
Вопрос в том, как итеративно получать число и делать из него нужную строку.
например: генерировать из 1 строку вида "0001".

сейчас это делаю с помощью 5 вложенных циклов.... но это кажется не очень красивым способом.
#!/bin/bash

allThreads=("B" "C" "D" "F" "G" "H" "J" "K" "L" "M" "N" "P" "Q" "R" "S" "T" "V" "W" "X" "Y" "Z")

echo "INSERT INTO public.audience (audience_name, \"limit\") VALUES " 

for ((l = 0 ; l < 10 ; l++)); do
    for ((g = 0 ; g < 10 ; g++)); do
        for ((k = 0 ; k < 10 ; k++)); do
            for ((j = 0 ; j < 10 ; j++)); do
                  for ((i = 0 ; i < 10 ; i++)); do

        audience=${allThreads[$l]}
                num=${g}${k}${j}${i}
             audience="${audience}${num}"

    echo "('${audience}'::varchar(5), `shuf -i1-40 -n1`), "

         done
       done
    done
  done
done

echo " ('Z1111'::varchar(5), `shuf -i1-40 -n1`);  "
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
martin74ua
@martin74ua Куратор тега Linux
Linux administrator
longclaps
@longclaps
from itertools import product

for t in product('BCDFGHJKLMNPQRSTVWXYZ', *['0123456789'] * 4):
    print(''.join(t))
Переходи на светлую сторону.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
#!/bin/bash
for letter in {A..Z}; do
  for number in $(seq -w 0 100); do
    echo "('${letter}${number}'::varchar(5), `shuf -i1-40 -n1`), "
  done
done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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