shell编程之shell格式化输出
- shell格式化输出
- echo 命令
- 输出字体颜色
- shell脚本交互:read命令
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