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中的echo 无法输出 shell echo输出到文件_背景颜色


扩展:

shell中的echo 无法输出 shell echo输出到文件_shell中的echo 无法输出_02

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