I am looking for producing success/fail messages which are right aligned in bash. An example would be what apache2 produces on executing: sudo /etc/init.d/apache2 relo
Here is something mostly based on the centos 'functions' script, but more stripped down
#!/bin/bash
RES_COL=60
MOVE_TO_COL="printf \\033[${RES_COL}G"
DULL=0
BRIGHT=1
FG_BLACK=30
FG_RED=31
FG_GREEN=32
FG_YELLOW=33
FG_BLUE=34
FG_MAGENTA=35
FG_CYAN=36
FG_WHITE=37
ESC="^[["
NORMAL="${ESC}m"
RESET="${ESC}${DULL};${FG_WHITE};${BG_NULL}m"
BLACK="${ESC}${DULL};${FG_BLACK}m"
RED="${ESC}${DULL};${FG_RED}m"
GREEN="${ESC}${DULL};${FG_GREEN}m"
YELLOW="${ESC}${DULL};${FG_YELLOW}m"
BLUE="${ESC}${DULL};${FG_BLUE}m"
MAGENTA="${ESC}${DULL};${FG_MAGENTA}m"
CYAN="${ESC}${DULL};${FG_CYAN}m"
WHITE="${ESC}${DULL};${FG_WHITE}m"
SETCOLOR_SUCCESS=$GREEN
SETCOLOR_FAILURE=$RED
SETCOLOR_NORMAL=$RESET
echo_success() {
$MOVE_TO_COL
printf "["
printf $SETCOLOR_SUCCESS
printf $" OK "
printf $SETCOLOR_NORMAL
printf "]"
printf "\r"
return 0
}
echo_failure() {
$MOVE_TO_COL
printf "["
printf $SETCOLOR_FAILURE
printf $"FAILED"
printf $SETCOLOR_NORMAL
printf "]"
printf "\r"
return 1
}
action() {
local STRING rc
STRING=$1
printf "$STRING "
shift
"$@" && echo_success $"$STRING" || echo_failure $"$STRING"
rc=$?
echo
return $rc
}
action testing true
action testing false