shell编程之shell格式化输出

Posted 锦衣admin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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格式化输出的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程之字符截取命令

Shell编程之awk

shell编程之tee命令和paste命令:数据输出命令

Shell编程之正则表达式

Shell编程入门

Shell编程之循环语句和函数