Краткий ответ - сделать
printf "%s\n" $GRAPH
Когда вы записываете выходные данные команды в переменную оболочки с $(…)
или `…`
, последний символ новой строки удаляется, и printf "%s" …
(в отличие от echo
) не добавляет символ новой строки по умолчанию. Итак, когда вы говорите printf "%s" $GRAPH
, вы получаете следующее приглашение оболочки в той же строке, что и вывод printf
.
Во-вторых, я советую вам изменить это на
printf "%s\n" "$GRAPH"
для защиты от некоторых забавных персонажей, появляющихся в $GRAPH
- - и вы явно получаете забавных персонажей.
В-третьих, вы говорите: « %
выглядит внутри черной полосы». Это выглядит как обратное видео, в котором цвета переднего плана и фона меняются местами. Это может быть вызвано одним или несколькими символами в $GRAPH
. Если все остальное, что вы делаете до конца времени, относится к инверсному видео, даже после того, как вы сделали два вышеупомянутых шага, попробуйте
printf "%s\n" "$GRAPH"; tput sgr0
tput
осуществляет терминальные функции; во многих случаях, написав строку. sgr0
- это короткое имя для функции exit_attribute_mode
, которая возвращает цвета переднего плана и фона в нормальное состояние (и отключает подчеркивание, мигание и любые другие атрибуты отображения, поддерживаемые вашим терминалом).