避免使用粗糙的echo
时间:2008-03-21 来源:剑心通明
当目前大部份的Unix或Linux都拥有echo命令时,它们大都以"-n"的方式来控制系统不要换新行。但并不是所有的系统都支持这种方式,也有部份的是利用"\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
使用者看到脚本的正确输出结果,是十分重要的。特別是当程序的互动性越来越频繁时,就更能显示出它的重要性。
脚本源代码
有许多的办法可以解决echo这个问题,将像这篇文章有许多篇一样。这个程序非常简洁,是笔者喜爱的程序之一:
function echon
{
echo "$*" | awk '{ printf "%s" $0 }'
}
你可能不喜欢使用awk命令,如果你的系统有printf命令,则程序可改写为:
echon()
{
printf "%s" "$*"
}
如果系统没有printf命令,也不想使用awk的话,你可以改用tr命令:
echon()
{
echo "$*" | tr -d '\n'
}
这段程序利用tr来完成换行的动作。tr对这个程序而言,是一个非常简单而且有效率的解决方法。
运行脚本
现在我们可以利用echon来取代echo,在输入完成后,别忘了按下enter键:
echon "Enter coordinates for satellite acquisition: "