как написать сценарий bash, как те, которые используются в init.Ди?

Я должен написать сценарий bash, который делает много вещей. Я хотел бы печатать сообщения так же хорошо,как сценарии init. Например:

 Doing A... [OK]  
 Doing B... [ERROR]  
 ....

вы знаете, как это сделать?

спасибо заранее

3 ответов


на всех моих Linux-боксах код для этого находится в файле:

/etc/init.d/functions

Если вы включите этот файл (. /etc/init.d/functions), а затем запустите свой код, делая это:

action /path/to/prog args

вы получите функциональность, которую хотите.


на /etc/init.d/* скрипты следуют довольно простому в использовании шаблону. Просто найдите один, скопируйте и измените его.

на [OK] / [ERROR] материал делается путем поиска файла /etc/init.d/functions в вашем скрипте (в верхней части вообще).


использовать функции printf. Мне тоже нравится, когда вещи закодированы по цвету. :)

вот преамбула, которую я использую в своих сценариях для настройки цветов и нескольких операторов printf...

#!/bin/bash
# checkload.sh - script to check logs for errors.
#
# Created by Ryan Bray, rbray@xxx.com


set -e

# Text color variables
txtund=$(tput sgr 0 1)    # Underline
txtbld=$(tput bold)       # Bold
txtred=$(tput setaf 1)    # Red
txtgrn=$(tput setaf 2)    # Green
txtylw=$(tput setaf 3)    # Yellow
txtblu=$(tput setaf 4)    # Blue
txtpur=$(tput setaf 5)    # Purple
txtcyn=$(tput setaf 6)    # Cyan
txtwht=$(tput setaf 7)    # White
txtrst=$(tput sgr0)       # Text reset

и тогда у меня есть такие утверждения, которые используют цвета в выводе:

printf "Checking for descrepancies in $LOAD_DATE$ADD_COMP\n"
DELTAS=$(awk 'BEGIN { FS = "\"" } {print ,,}' $COMP_FILE)
if [[ "$DELTAS" == *[1-9]* ]]; then
        printf "%74s[${txtred}FAIL${txtrst}]\n"
        printf "$COMP_FILE contains descrepancies.\n"
        exit 1
else
        printf "%74s[${txtgrn}PASS${txtrst}]\n"
fi

надеюсь, что это помогает!

-Райан