第一章:The Missing Code Library--8.避免不合要求的echo方法

大部分流行的Unix和Linux版本都有一个echo命令。它包含有-n选项来禁止换行,但并非全部的版本都同样。其中一些版本的echo命令使用\c做为一个特殊的嵌入字符来禁止换行,还有一些则必须换行后才能输出。想要搞明白你本身的echo版本是什么样的,很是简单:只须要在命令行上键入下面的语句便可:
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
确保脚本输出是按照要求呈现给用户是很是重要的,而且随着脚本交互性的加强,这点会变得愈来愈重要。

代码: shell

#!/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
相关文章
相关标签/搜索