shell编程之shell格式化输出
Posted 锦衣admin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之shell格式化输出相关的知识,希望对你有一定的参考价值。
shell编程之shell格式化输出
shell格式化输出
echo 命令
功能:将内容输出到默认显示设备
应用场景:需要计算机程序输出的地方
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用
echo命令说明:
命令格式:
# echo 选项 字符串
补充说明:echo命令会将输出的字符串送往标准输出。输出的字符串以空白符隔开,并在最后加上换行符
选项说明:
--help:显示帮助。如:echo --help
--version:显示版本。如:/usr/bin/echo --version
-n:执行命令时不要在最后自动换行。即默认输出会在字符串后面加上一个换行符
-e:解析转义字符。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
转义字符:
\\a:发出警告声
\\b:删除前一个字符
\\c:最后不加上换行符
\\f:换行但光标仍旧停留在原来的位置
\\v:与\\f相同
\\n:换行且光标移至行首
\\r:光标移至行首,但不换行(注意是在同一行的内容不换行)
\\t:插入tab
\\:插入\\字符
\\0nnn:打印nnn(八进制)所代表的的ascii字符。备注:数字0,不是字母o
\\xNN:打印NN(十六进制)所代表的ascii字符
演示:
# echo -n "hello word" => 不换行。一般用户交互的时候,光标停留在提示字符后面
[root@server ~]# echo "hello word"
hello word
[root@server ~]# echo -n "hello word"
hello word[root@server ~]#
# echo -e "hello word\\c" => 不换行
# echo -e "hello \\cword" => 不换行,\\c后面字符不输出
[root@server ~]# echo -e "hello word\\c"
hello word[root@server ~]#
[root@server ~]# echo -e "hello \\cword"
hello [root@server ~]#
# echo -e "\\a" => 会发出一个警告声
[root@server ~]# echo -e "\\a"
# echo -e "a\\nd\\nmin" => \\n 会自动换行
[root@server ~]# echo -e "a\\nd\\nmin"
a
d
min
# echo -e "hel\\to\\to" => \\t 会插入一个tab
[root@server ~]# echo -e "hel\\to\\to"
hel o o
# echo -e "he\\b\\bloo" => \\b 删掉前一个字符。一般应用于倒计时
[root@server ~]# echo -e "he\\b\\bloo"
loo
# echo -e "\\0123" => 八进制123的ascii码字符是S
[root@server ~]# echo -e "\\0123"
S
# echo -e "\\x61" => 十六进制61的ascii码字符是a
[root@server ~]# echo -e "\\x61"
a
输出字体颜色
脚本中echo显示内容待=带颜色显示。echo显示带颜色,需要使用参数-e
,\\033
内表示需要输出颜色的字符串
输出颜色说明:
命令格式:
# echo -e "\\033[字背景颜色;文字颜色m 字符串 \\033[0m"
选项说明:
字符串 :字符串前后可以没有空格,如果有,输出也同样有空格
\\033 :表示\\033中间的字符串字体颜色和北京颜色
[字背景颜色; :这个选项可选,代表显示的背景颜色。背景颜色和文字颜色中间有个;
字背景颜色选值范围:30~37
[文字颜色m :这个选项可选,代表字体的颜色,后面有个m
文字颜色选值范围:40~47
最后面控制选项说明:
\\033[0m :关闭所有属性,关闭特效。数字0字母m
\\033[1m:设置高亮
\\033[4m:下划线
\\033[5m:闪烁
\\033[7m:返显
\\033[8m:消隐
演示:
字体颜色:30~37
# echo -e "\\033[30m 黑色字 \\033[0m"
# echo -e "\\033[31m 红色字 \\033[0m"
# echo -e "\\033[32m 绿色字 \\033[0m"
# echo -e "\\033[33m 黄色字 \\033[0m"
# echo -e "\\033[34m 蓝色字 \\033[0m"
# echo -e "\\033[35m 紫色字 \\033[0m"
# echo -e "\\033[36m 天蓝色字 \\033[0m"
# echo -e "\\033[37m 白色字 \\033[0m"
字背景颜色:40~47
# echo -e "\\033[40;37m 黑底白字 \\033[0m"
# echo -e "\\033[41;37m 红底白字 \\033[0m"
# echo -e "\\033[42;37m 绿底白字 \\033[0m"
# echo -e "\\033[43;37m 黄底白字 \\033[0m"
# echo -e "\\033[44;37m 蓝底白字 \\033[0m"
# echo -e "\\033[45;37m 紫底白字 \\033[0m"
# echo -e "\\033[46;37m 天蓝底白字 \\033[0m"
# echo -e "\\033[47;30m 白底黑字 \\033[0m"
扩展:
shell脚本交互:read命令
功能:默认接受键盘的输入,回车符代表输入结束
应用场景:人机交互
read命令说明:
命令格式:
# read 选项 var 该变量用于接受键入的信息
var:变量的名称
选项说明:
-p:打印信息,与其他选项一起使用,-p选项需放在后面
-t:限定时间,超时退出
-s:不回显
-n:限定输入字符个数,设定阈值
演示:
#read -s -t 10 -n 6 passwd => 将键盘输入的内容赋值给变量
[root@server /]# vim login.sh
#!/bin/bash
echo -n "login:" => 键盘输入,且不换行
read username => 通过read命令接受键入的值,保存到变量中
echo -n "passwd:"
read -s -t 10 -n 6 passwd
=> -s 选项不回显,隐藏输入密码;
=> t 10 表示10秒后不键入内容自动执行后面的代码;
=> -n 6 表示输入的字符只能是6个,达到阈值自动往下执行代码
echo "您输入的用户名是:$username" => 打印变量
echo "您输入的密码是:$passwd"
[root@server /]# sh login.sh
login:admin
passwd:123 您输入的用户名是:admin
您输入的密码是:123
优化:减少调用
# read -t 10 -s -n 6 -p "passwd:" pwd => -p选项将键入的信息传递给变量pwd
[root@server /]# vim login.sh
#!/bin/bash
echo -n "login:"
read username
read -t 10 -s -n 6 -p "passwd:" pwd
echo "您输入的用户名是:$username"
echo "您输入的密码是:$pwd"
[root@server /]# sh login.sh
login:admin
passwd:您输入的用户名是:admin
您输入的密码是:123456
案例:写一个用户登录交互
#!/bin/bash
# 清屏
clear
echo "CentOS Linux 7 (Core)"
echo -e "kernel `uname -r` on an `uname -m`\\n"
read -p "$HOSTNAME login:" uname
read -s -t5 -p "passwd:" pwd
# 超时后回调自己,sh是bash的快捷方式
# 使用$0
sh $0
以上是关于shell编程之shell格式化输出的主要内容,如果未能解决你的问题,请参考以下文章