shell编程调用系统函数库和调用颜色函数库
在自己的shell脚本中调用系统自带函数库
重要的是编程思想方法:
1、利用[[ ]]、&&、 ||符号进行对if条件判断进行替换,适合在一个大的if里面还需要进行if判断的情况
2、echo输出颜色脚本利用位置变量
简单使用,命令行介绍
/etc/init.d/functins文件是系统自带的函数库,我们在写shell脚本的时候,source /etc/init.d/functions就可以得到四个echo相关命令,使用这些命令可以让自己的脚本输出和系统的一样,先在命令行进行演示,source之后,输入echo进行tab补全,可以看到我们得到了failure passed success warning四种情况的系统输出格式的命令
[root@sun init.d]# source functions
[root@sun init.d]# echo
echo echo_failure echo_passed echo_success echo_warning
学会简单的用法,直接这样写
[root@sun init.d]# failure && echo "失败情况的系统输出"
失败情况的系统输出 [失败]
[root@sun init.d]# passed && echo "失败情况的系统输出"
失败情况的系统输出 [通过]
[root@sun init.d]# warning && echo "警告情况的系统输出"
警告情况的系统输出 [警告]
[root@sun init.d]# success && echo "成功情况的系统输出"
成功情况的系统输出 [ 确定 ]
下面的是执行的有颜色的效果
简单使用,shell脚本示例
#!/bin/bash
# Author:kakaops
# Email:17852032278@139.com
# 示例success和failure在启动和停止服务中的应用
# 以nginx为例子,nginx的官方启动命令为nginx,官方停止命令为nginx -s stop
# 示例如何用&&和||替换需要多行的if判断
source /etc/init.d/functions
###################
# start函数
###################
start_nginx(){
[[ $(netstat -auntpl |grep nginx|wc -l) > 0 ]] && failure && echo "Nginx is already running" && exit
nginx
([ $? -eq 0 ] && success && echo "Nginx start sucessfully!") ||( failure && echo "Failed start nginx" )
}
###################
# stop函数
###################
stop_nginx(){
[[ $(ss -auntpl |grep nginx |wc -l) == 0 ]] && failure && echo "Nginx is not running" && exit
nginx -s stop
([ $? -eq 0 ] && success && echo "Nginx stop sucessfully!") || ( failure && echo "Failed stop nginx" )
}
case $1 in
start)
start_nginx
;;
stop)
stop_nginx
;;
*)
exit
;;
esac
自制echo的color.sh
echo改变当前终端的颜色(\e也可以是\033)
echo -e 颜色(-e是激活转义字符)
[root@sun ~]# echo -e “\e[1;31mThis is red text\e[0m”
用echo命令打印带有色彩的文字:
文字色:
echo -e “\e[1;31mThis is red text\e[0m”
\e[1;31m 将颜色设置为红色
\e[0m 将颜色重新置回
字体本身的颜色和文字背景色文字动作色码在分号左右没有要求,引号可以并列多个格式
字体前景色:
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
文字背景色:
echo -e “\e[1;42mGreed Background\e[0m”
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
文字动作:
echo -e “\e[37;31;5mMySQL Server Stop…\e[0m”
动作码:0 关闭所有属性、1 设置高亮度(加粗)、3 倾斜 、4 下划线、5 闪烁、7 反显、8 消隐
python print() 输出颜色和echo一样:-e换成 \033
color.sh的用法
在这个脚本里,只是设置颜色为高亮显示,别的参数,如果需要,自行添加,重要的是变思想方法
# 处理单行命令的颜色输出
function black(){
echo -e "\e[1;30m$1\e[0m"
}
function red(){
echo -e "\e[1;31m$1\e[0m"
}
function green(){
echo -e "\e[1;32m$1\e[0m"
}
function yellow(){
echo -e "\e[1;33m$1\e[0m"
}
function blue(){
echo -e "\e[1;34m$1\e[0m"
}
function carmine(){
echo -e "\e[1;35m$1\e[0m"
}
function cyan(){
echo -e "\e[1;36m$1\e[0m"
}
function while(){
echo -e "\e[1;37m$1\e[0m"
}
先在当shell执行一下,看看效果然后进行改进
可以用颜色打印输出一个文件
颜色打印一条命令的输出
上述验证,我们的color.sh脚本是可以行的,但脚本虽然很简单但是很长,改进一下
color.sh最终改进版本
function color(){
declare -A color_info
color_info=([black]=30 [red]=31 [green]=32 [yellow]=33 [blue]=34 [carmine]=35 [cyan]=36 [white]=37)
echo -e "\e[1;${color_info[$1]}m$2\e[0m"
}
调用的时候和上面有点区别,需要传递两个位置参数 $1、$2
命令行测试:
输出文件测试
命令输出测试
shell命令行可以用,在自己写的脚本里面source一下,用法一样,不再赘述