我正在尋找生成在bash中右對齊的成功/失敗消息。一個例子是apache2在執行時產生的內容:sudo /etc/init.d/apache2 reload
等bash:在窗口右端回顯一些東西(右對齊)
在上面的例子中,apache2產生非常好和簡潔的[OK]
或[fail]
消息,它們是右對齊的。
另外,很想知道如何獲得文本紅色,以防萬一,我們要產生一個[fail]
消息。
我正在尋找生成在bash中右對齊的成功/失敗消息。一個例子是apache2在執行時產生的內容:sudo /etc/init.d/apache2 reload
等bash:在窗口右端回顯一些東西(右對齊)
在上面的例子中,apache2產生非常好和簡潔的[OK]
或[fail]
消息,它們是右對齊的。
另外,很想知道如何獲得文本紅色,以防萬一,我們要產生一個[fail]
消息。
#!/bin/bash
RED=$(tput setaf 1)
GREEN=$(tput setaf 2)
NORMAL=$(tput sgr0)
col=80 # change this to whatever column you want the output to start at
if <some condition here>; then
printf '%s%*s%s' "$GREEN" $col "[OK]" "$NORMAL"
else
printf '%s%*s%s' "$RED" $col "[FAIL]" "$NORMAL"
fi
@SiegeX:'col = $(tput cols)'比硬編碼要好,並且與其他'tput'用途更一致。此外,您的方法爲顏色轉義消耗額外的空間,實際上並不佔用任何空間。 'printf'%s%* s%s'「$ GREEN」$ col'[OK]'「$ NORMAL」'可能更乾淨。 – geekosaur 2011-03-31 20:59:51
@geek:我決定不用'輸入cols'和'輸入cup',因爲前者不給你指定列的靈活性(它可能不是最好的毛邊),後者需要#行。 – SiegeX 2011-03-31 21:04:41
@SiegeX:你可以使用'tput hpa'作爲後者。 – geekosaur 2011-03-31 21:07:14
看一看這個線程,可能是有趣:how to write a bash script like the ones used in init.d?
在Linux CentOS的6.5,我使用的/etc/init.d/functions文件:
#!/bin/bash
. /etc/init.d/functions # include the said file
action "Description of the action" command
exit 0
假設command
成功返回0
,如果發生錯誤,則返回正值。 爲了讓腳本易於閱讀,我使用了函數調用而不是整個命令。
下面是一個例子:
#!/bin/bash
. /etc/init.d/functions
this_will_fail()
{
# Do some operations...
return 1
}
this_will_succeed()
{
# Do other operations...
return 0
}
action "This will fail" this_will_fail
action "This will succeed" this_will_succeed
exit 0
導致: (注:法語的語言環境;-))
希望對大家有所幫助!
請注意,'/ etc/init.d/functions'的導入修改了'$ PATH'。 – epsilonhalbe 2017-03-22 10:39:25
這主要是基於CentOS的「功能」腳本什麼的,但更精簡
#!/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
"[email protected]" && echo_success $"$STRING" || echo_failure $"$STRING"
rc=$?
echo
return $rc
}
action testing true
action testing false
用printf;參見http://stackoverflow.com/questions/2199843/bourne-shell-left-right-justify – 2011-03-31 20:55:59