第一章:The Missing Code Library--8.避免不合要求的echo方法
2012-12-10 11:51
459 查看
大部分流行的Unix和Linux版本都有一个echo命令。它包含有-n选项来禁止换行,但并不是所有的版本都一样。其中一些版本的echo命令使用\c作为一个特殊的嵌入字符来禁止换行,还有一些则必须换行后才能输出。想要搞明白你自己的echo版本是什么样的,非常简单:只需要在命令行上键入下面的语句即可:
如果你的echo有-n选项,会有:
如果没有,那么则是另一番景象:
确保脚本输出是按照要求呈现给用户是非常重要的,并且随着脚本交互性的增强,这点会变得越来越重要。
代码:
运行脚本:
使用该脚本时,只需要在调用echo命令时用用echon简单的替换下就行了,这样就不会自动换行了。
输出:
echo -n "The rain in Spain";echo " falls mainly on the Plain"
如果你的echo有-n选项,会有:
The rain in Spain falls mainly on the Plain
如果没有,那么则是另一番景象:
-n The rain in Spain falls mainly on the Plain
确保脚本输出是按照要求呈现给用户是非常重要的,并且随着脚本交互性的增强,这点会变得越来越重要。
代码:
#!/bin/sh # 本书中有非常多的方法来解决这种echo问题。其中我最喜欢的方式非常简洁: function echon { echo "$*" | awk '{printf("%s", $0)}' #注意,原文中,是没有括号的,经测试,我是用的awk版本不支持,所有加上括号,仿C } # 你可能想要避免上面的内部调用awk命令的方法,不过,如果你有一个用户级的printf命令的话 # 也可以用它来代替: echon() { printf "%s" "$*" } # 如果你没有printf命令,也不想调用awk,那么请使用tr命令: echon() { echo "$*" | tr -d "\n" # 参数请参考手册页 } # 这个tr命令的版本是非常有效简单的
运行脚本:
使用该脚本时,只需要在调用echo命令时用用echon简单的替换下就行了,这样就不会自动换行了。
#!/bin/sh function echon { echo "$*" | awk '{printf("%s", $0)}' } echon "Enter coordinates for satellite acquisition:" echo "HH" exit 0
输出:
./poorEcho.sh Enter coordinates for satellite acquisition:HH
相关文章推荐
- 第一章:The Missing Code Library--8.避免不合要求的echo方法
- 第一章:The Missing Code Library--5.合法化整型输入
- 第一章:The Missing Code Library--4.优雅的表示大数
- 第一章:The Missing Code Library--13.调试Shell脚本
- 第一章:The Missing Code Library--3.正常化日期格式
- 第一章:The Missing Code Library--4.优雅的表示大数
- 第一章:The Missing Code Library--2.合法化输入
- 第一章:The Missing Code Library--1.在系统路径PATH中寻找程序
- 第一章:The Missing Code Library--1.在系统路径PATH中寻找程序
- 第一章:The Missing Code Library--2.合法化输入
- 第一章:The Missing Code Library--9.一个任意精度浮点计算器
- 第一章:The Missing Code Library--9.一个任意精度浮点计算器
- 第一章:The Missing Code Library--11.ANSI颜色序列
- 第一章:The Missing Code Library--7.合法化日期格式
- 第一章:The Missing Code Library--5.合法化整型输入
- 第一章:The Missing Code Library--6.合法化浮点数输入
- 第一章:The Missing Code Library--12.建立一个Shell脚本库
- 第一章:The Missing Code Library--10.锁定文件
- 第一章:The Missing Code Library--6.合法化浮点数输入
- 第一章:The Missing Code Library--3.正常化日期格式