Вот функция, которую я собрал, которую вы можете использовать для печати элементов, связанных со справкой, по одному. Я использовал пример -m
и длинную строку справки из вопроса. Функция жестко кодирует ширину 10 для первого столбца, затем вычисляет оставшееся пространство для столбца 2.
#!/bin/bash
function printhelp() (
c1width=10
cols=$(tput cols)
c2width=$((cols - c1width - 1))
readarray -t lines < <(printf '%s' "$2" | fmt -w $c2width)
for((line=0; line < ${#lines[*]}; line++))
do
if [ $line -eq 0 ]
then
col1="$1"
else
col1=" "
fi
printf "%-${c1width}s %-${c2width}s\n" "$col1" "${lines[line]}"
done
)
optf='-m'
optd='This is a very very very very very very very very very very very very very very very very very very very very long sentence'
printhelp "$optf" "$optd"
Пример вывода на экране с 50 столбцами:
-m This is a very very very very very
very very very very very very very
very very very very very very very
very long sentence
и на экране с 80 столбцами:
-m This is a very very very very very very very very very very very
very very very very very very very very very long sentence
и на экране из 130 столбцов:
-m This is a very very very very very very very very very very very very very very very very very very very very
long sentence
и на экране из 150 столбцов:
-m This is a very very very very very very very very very very very very very very very very very very very very long sentence