Как выровнять текстовые строки по правому и левому краям в Bash

Я создаю сценарий bash и хотел бы вывести сообщение с выровненным по правому краю статусом (ОК, Предупреждение, Ошибка и т. Д.) На том же самом линия.

Без цветов выравнивание идеальное, но добавление цветов приводит к неправильному переносу выровненного по правому краю столбца на следующую строку.

#!/bin/bash

log_msg() {
    RED=$(tput setaf 1)
    GREEN=$(tput setaf 2)
    NORMAL=$(tput sgr0)
    MSG="$1"
    let COL=$(tput cols)-${#MSG}

    echo -n $MSG
    printf "%${COL}s"  "$GREEN[OK]$NORMAL"
}

log_msg "Hello World"
exit;
6
задан Highway of Life 30 December 2011 в 18:17
поделиться