echo和printf打印输出
[root@node2 scprits]# echo Hello World!
Hello World!
[root@node2 scprits]# echo 'Hello World!'
Hello World!
[root@node2 scprits]# echo "Hello World!"
-bash: !": event not found
#双引号不能打印感叹号
[root@node2 scprits]# echo Hello World!;echo 'Hello World!'
-bash: !: event not found
[root@node2 scprits]# echo 'Hello World!';echo Hello World!
Hello World!
Hello World!
#感叹号可以在最结尾
从上面几个实验发现,在bash环境下,要输出感叹号必须使用单引号。这是因为默认情况下开启了使用感叹号引用内存中的历史命令的设置,可以使用set +H关闭该设置,这时可以使用感叹号输出。
[root@node2 scprits]# set +H
[root@node2 scprits]# echo "Hello World!"
Hello World!
或者使用多对引号分别包围echo的参数,其中感叹号使用单引号包围,如下。
[root@node2 scprits]# echo "Don't use rm -rf command"'!'
Don't use rm -rf command!
如果echo不加任何引号,很显然不能输出分号“;”,因为分号会被shell解析为命令连接符号。
[root@node2 scprits]# echo Hello World;
Hello World
[root@node2 scprits]# echo "Hello World;"
Hello World;
但只加单引号又不能扩展变量,使用双引号又不好输出感叹号,所以echo命令克服各种疑难杂症的方法是对特殊符号分开引用。
[root@node2 scprits]# str=hello
[root@node2 scprits]# echo "$str"'!' "world"
hello! world
echo中的转义
echo -e识别转义和特殊意义的符号,如换行符、n、制表符\t、转义符\等。
[root@node2 scprits]# echo 'Hello World!\n';echo "Hello World"!
Hello World!\n
Hello World!
[root@node2 scprits]# echo -e 'Hello World!\n';echo "Hello World"!
Hello World! Hello World!
echo默认的分行处理
不加-n的默认情况下echo会在每行行尾加上换行符号,使用echo -n取消分行输出。
[root@node2 scprits]# echo -n 'Hello World!' >abc.sh
[root@node2 scprits]# echo 'Hello World!' >>abc.sh
[root@node2 scprits]# cat abc.sh
Hello World!Hello World!
[root@node2 scprits]# echo 'Hello World!'>abc.sh
[root@node2 scprits]# echo 'Hello World!'>>abc.sh
[root@node2 scprits]# cat abc.sh
Hello World!
Hello World!
echo的颜色输出
echo可以控制字体颜色和背景颜色输出。
常见的字体颜色:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,紫色=35,天蓝色=36,白色=37。
常见的背景颜色:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,紫色=45,天蓝色=46,白色=47。
字体控制选项:1表示高亮,4表示下划线,5表示闪烁等。
因为需要使用特殊符号,所以需要配合-e选项来识别特殊符号。
[root@node2 scprits]# echo -e "\e[1;41m Red Bcakground \e[0m"
Red Bcakground
[root@node2 scprits]# echo -e "\e[1;31m Red Bcakground \e[0m"
Red Bcakground
颜色控制和字体控制选项的定义顺序无所谓,只要被定义出来,shell都能识别。建议定义了颜色后同时定义关闭颜色,否则颜色会继续影响bash环境的颜色。
另外,任意一个\e可以使用\033替换。如:
[root@node2 scprits]# echo -e "\033[1;41m Red Bcakground \033[0m"
Red Bcakground
[root@node2 scprits]# echo -e "\e[1;31m Red Bcakground \033[0m"
Red Bcakground
printf
使用printf可以输出更规则更格式化的结果。它引用于C语言的printf命令,但是有些许区别。
使用printf可以指定字符串的宽度、实现左对齐(使用减符号-)、右对齐(默认的)、格式化小数输出等。
使用printf最需要注意的两点是:
(1)printf默认不在结尾加换行符,它不像echo一样,所以要手动加“\n”换号;
(2)printf只是格式化输出,不会改变任何结果,所以在格式化浮点数的输出时,浮点数结果是不变的,仅仅只是改变了显示的结果。
[root@node2 scprits]# cat >abc.sh<<eof
> #!/bin/bash
> #文件名:abc.sh
> printf "%-5s %-10s %-4s\n" No Name Mark # 三个%分别对应后面的三个参数
> printf "%-5s %-10s %-4.2f\n" Sarath 80.34 # 减号“-”表示左对齐
> printf "%-5s %-10s %-4.2f\n" James 90.998 # 5s表示第一个参数占用5个字符
> printf "%-5s %-10s %-4.2f\n" Jeff 77.564
> eof
[root@node2 scprits]# bash abc.sh
No Name Mark
Sarath 80.34
James 91.00
Jeff 77.56
[root@node2 scprits]# sed -i s#'-'##g abc.sh
[root@node2 scprits]# cat abc.sh
#!/bin/bash
#文件名:abc.sh
printf "%5s %10s %4s\n" No Name Mark # 三个%分别对应后面的三个参数
printf "%5s %10s %4.2f\n" Sarath 80.34 # 减号“”表示左对齐
printf "%5s %10s %4.2f\n" James 90.998 # 5s表示第一个参数占用5个字符
printf "%5s %10s %4.2f\n" Jeff 77.564
[root@node2 scprits]# bash abc.sh
No Name Mark
Sarath 80.34
James 91.00
Jeff 77.56
[root@node2 scprits]# cat abc.sh
#!/bin/bash
#文件名:abc.sh
printf "%5s\t %10s\t %4s\n" No Name Mark # 三个%分别对应后面的三个参数
printf "%5s\t %10s\t %4.2f\n" Sarath 80.34 # 减号“”表示左对齐
printf "%5s\t %10s\t %4.2f\n" James 90.998 # 5s表示第一个参数占用5个字符
printf "%5s\t %10s\t %4.2f\n" Jeff 77.564
[root@node2 scprits]# bash abc.sh
No Name Mark
Sarath 80.34
James 91.00
Jeff 77.56
printf还有一个常见的i格式,表示对整型格式化占用几个整数,前面示例中的s表示对字符格式化。
echo和printf打印输出的更多相关文章
- shell脚本--echo和printf打印输出
		bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 注:本文关于引号等特殊符号的处理仅仅只是几个例子,想要彻底搞明 ... 
- [ SHELL编程 ] echo和printf使用实例
		本文主要描述Linux系统中echo和printf命令的使用方法,包括命令参数的含义.使用技巧. 1.echo 了解一个命令我们首先要知道它能做什么,它有哪些参数,参数的含义,可以实现我们哪方面 ... 
- shell入门笔记2:字符串、数组、echo与printf
		说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell字符串 字符串可以用单引号,也可以用双引号,也可以不用引号. 1 #!/bin/bash 2 ... 
- shell echo/read/printf/流程控制章节笔记
		// echo read printf 流程控制 命令 1.read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量 read hello 输入xxx echo $hell ... 
- shell--4.echo和printf
		1. echo (1) echo ,显示普通字符串 echo "HelloWorld" 打印:HelloWorld (2) \ ,显示转义字符串 echo "\" ... 
- shell之echo与printf和颜色
		在用户的bashrc中添加一行export来修改提示符. 
- [转]PHP echo, print, printf, sprintf函数的区别和使用
		1. echo函数: 输出函数,是命令,不能返回值.echo后面可以跟很多个参数,之间用分号隔开,如: echo $myvar1; echo 1,2,$myvar,"<b>bol ... 
- PHP echo, print, printf, sprintf函数的区别和使用
		1. echo函数: 输出函数,是命令,不能返回值.echo后面可以跟很多个参数,之间用分号隔开,如: echo $myvar1; echo 1,2,$myvar,"<b>bol ... 
- PHP基础温习之echo  print  printf  sprintf   print_r   var_dump的用法与区别
		一.echoecho() 实际上不是一个函数,是php语句,因此您无需对其使用括号.不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误.而且echo是返回void的,并不 ... 
随机推荐
- zz《分布式服务架构 原理、设计与实战》综合
			这书以分布式微服务系统为主线,讲解了微服务架构设计.分布式一致性.性能优化等内容,并介绍了与微服务系统紧密联系的日志系统.全局调用链.容器化等. 还是一样,每一章摘抄一些自己觉得有用的内容,归纳整理, ... 
- 第十 构建Web内容的技术
			第十章 构建Web内容的技术 一.HTML HTML(HyperText Markup Language,超文本标记语言)是为了发送Web 上的超文本(Hypertext)而开发的标记语言.超文本是一 ... 
- Alpha冲刺(1/4)
			队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪些任务:SVN管理工具搭建 展示G ... 
- 360安全浏览器右击不显示审查元素 或按F12不弹出开发人员工具的原因和解决方法:设为极速模式
			IE兼容模式 会显示 IE的开发人员工具 极速模式 才会显示谷歌的那种方式 IE调试模式不怎么习惯,如下图 正常调试模式如下图 
- 赞!这款国产的SSH工具,好用到爆!
			之前分享 MobaXterm 时 有小伙伴留言说到了 FinalShell 我本来是一脸蒙蔽的 网上搜了一下 它们家的官网 打开官网 我一度怀疑自己进错了网站 简单(jianlou)的排版 像极了上个 ... 
- HTML+CSS基础    并集选择器
			并集选择器.a,.b 
- A query was run and no Result Maps were found for the Mapped Statement
			mybatis测试方法报错: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exec ... 
- Kubernetes configMap(配置文件存储)
			Kubernetes configMap(配置文件存储) 官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure ... 
- 部署 asp.net 网站到 Azure
			部署asp.net网站到Azure 前言 前些天一直在写一个单页面web应用程序,终于完成了,于是考虑发布到云服务器.本人没有AWS账号,遂本打算使用谷歌云.参考文档后发现官方文档给出的方式为在vis ... 
- 大话区块链【Blockchain】
			最近这几天区块链又粉墨登场了,新闻媒体也一直在大量报道,宣称可能要在金融界掀起一番浪潮.甚至有人说很久之前中国就出现了区块链的产物——麻将.那么区块链到底是什么,麻将和区块链又有什么关系呢? 笔者这两 ... 
