Назовите меня старой школой, но я бы использовал printf () или sprintf ():
printf "%-33s%s%s\n", $key, $prompt, $value;
Это оставленное выравнивает строку $ key на 33 пробела, добавляет $ prompt и $ value и символ новой строки. Если бы я хотел рассчитать длину для первой части динамически:
printf "%-*s%s%s\n", $len, $key, $prompt, $value;
Поскольку это одна строка вместо 4 вопроса (вариант 1) или 6 (вариант 2), он получает положительную оценку по шкале краткости.