如何编写像init.d中使用的bash脚本?

时间:2010-03-22 18:51:25

标签: bash scripting

我必须编写一个包含很多内容的bash脚本。我想打印与init脚本一样好的消息。例如:

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

你知道如何做到这一点吗?

提前致谢

3 个答案:

答案 0 :(得分:11)

在我的所有Linux机器上,执行此操作的代码位于文件中:

/etc/init.d/functions

如果您包含该文件(. /etc/init.d/functions),然后运行您的代码:

action /path/to/prog args

您将获得所需的功能。

答案 1 :(得分:4)

/etc/init.d/*脚本遵循相当容易使用的模板。只需找到一个并复制并修改它。

[OK] / [ERROR]内容通过在您的脚本中获取文件/etc/init.d/functions来完成(通常在顶部)。

答案 2 :(得分:1)

使用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 $24,$26,$28}' $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

希望这有帮助!

-Ryan