#!/bin/bash
#定义展示使用方式
USAGE="
命令:
css [-c red] [-b white] [--bold] [--underline] [--reverse] [--blink] msg1...
选项:
-b, --background 指定背景颜色
-c, --color 指定字体颜色
--debug 打印调式信息
--underline 下划线
--help 帮助
--reverse 反显
--blink 闪烁
--bold 加粗
颜色:
black|red|green|yellow|blue|purple|pink|cyan|white|grey
样式:
\e[31m红色\e[0m \e[32m绿色\e[0m \e[33m黄色\e[0m \e[34m蓝色\e[0m \e[35m紫色\e[0m \e[36m天蓝\e[0m \e[37m白色\e[0m
\e[41;30m红底\e[0m \e[42;30m绿底\e[0m \e[43;30m黄底\e[0m \e[44;30m蓝底\e[0m \e[45;30m紫底\e[0m \e[46;30m天蓝\e[0m \e[47;30m白底\e[0m
"
#控制选项
option(){
case $1 in
-b|--background) echo 4 ;;
-c|--color) echo 3 ;;
--bold) echo 1 ;;
--underline) echo 4 ;;
--blink) echo 5 ;;
--reverse) echo 7 ;;
*) echo "" ;;
esac
}
#ANSI颜色控制码
color(){
type=`option $1`
case $2 in
#0:黑色|1:红色|2:绿色|3:黄色|4:蓝色|5:紫色|6:天蓝|7:白色
black) echo ${type}0 ;;
red) echo ${type}1 ;;
green) echo ${type}2 ;;
yellow) echo ${type}3 ;;
blue) echo ${type}4 ;;
purple|pink) echo ${type}5 ;;
cyan) echo ${type}6 ;;
white|gray) echo ${type}7 ;;
*) echo "" ;;
esac
}
log(){
[[ $1 == on ]] && echo -e "\e[32m[ debug ]\e[0m$2"
}
main(){
#echo "共传入: $#个参数,参数为: $*"
#getopt格式化参数
#set -- 效果是将命令行参数替换成set命令的参数值
#eval 命令用于将其后的内容作为单个命令读取和执行,这里用于处理getopt命令生成的参数的转义字符
#-o或--options选项后面接可接受的短选项,如ab:c::,表示可接受的短选项为-a -b -c,其中-a选项不接参数,-b选项后必须接参数,-c选项的参数为可选的
#-l或--long选项后面接可接受的长选项,用逗号分开,冒号的意义同短选项。
ARGS=`getopt -o b:c: -l background:,color:,debug,underline,help,reverse,blink,bold -- "$@"`
if [ $? != 0 ]; then
echo "Terminating..."
exit 1
fi
#echo $ARGS
#将规范化后的命令行参数分配至位置参数($1,$2,...)
eval set -- "${ARGS}"
#echo $*
code=""
debug=""
#解析选项
while true ;do
case $1 in
-b|--background|-c|--color)
code="`color $1 $2`;${code}"
shift 2;;
--debug)
debug=on
shift ;;
--bold|--underline|--blink|--reverse)
code="`option $1`;${code}"
shift ;;
--help)
echo -e "${USAGE}"
exit 1 ;;
--)
shift;
break ;;
*)
echo "$1 is not an option";
exit 1 ;;
esac
done
log $debug 生成的颜色代码为:${code}
code=${code%%;}
code=${code##;}
log $debug 截取后颜色代码为:${code}
#解析参数
msg="$*"
log $debug 原始参数:${msg}
[[ -n ${code} ]] && msg="\e[${code}m${msg}\e[0m"
echo -e "[ 样式 ]"${msg}
echo "[ 代码 ]"${msg}
echo
}
main $*
2052

被折叠的 条评论
为什么被折叠?



