a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 82|回复: 0

[综合辅导] Linux辅导:Echo与Printf回显命令差异分析与应用

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
为了提高与用户的交互性,裹足本编写中往往需要在终端上输出一些提醒信息,以提醒用户所需要的操作。如下图所示,在一个按照学生学号发芽学生相关信息的剧本轨范中,就会有提醒用户输入学生学号的提醒信息。! V& N  Q' r4 d1 K: R' `

- n; p; W; d' q  ]! C5 G3 D% n    如不美观要实现如上的需求,在Unix操作系统中可以操作echo与printf两个回显呼吁来实现。可是到挪用哪个呼吁好呢?笔者先给出一个谜底,然后再进行声名。凡是情形下,笔者建议操作系统工程师最好使用printf呼吁,而不是采用echo呼吁。除非在你原本的轨范中就带有良多的echo呼吁,为了统一性的考虑继续沿用echo呼吁。一般来说只若是新编写的剧本轨范,最好都能够操作printf呼吁来替代echo呼吁。
% o8 c4 ^* n' o8 h, F  r  一、echo呼吁的缺陷剖析。3 U  I# ?  [9 Z6 L( {. x/ c
  Echo呼吁可以说是Unix操作系统呼吁中的老祖宗了。这个呼吁首要用来在终端显示相关的信息,如当前的情形变量、显示提醒信息等等。在刚起头的时辰,echo是一个外部呼吁,而此刻根基上所有的外壳轨范中都内置了这个echo呼吁。而按照内部呼吁优先的原则,阿谁外部呼吁文件就酿成了放置,根基没用。虽然说echo呼吁斗劲老,其呈此刻Unix系实足一规范之前,故其有斗劲大的缺陷。如不美观操作echo呼吁作为Unix操作系统中的回显呼吁,就感受不怎么合适。
2 m) V) s& Z) T% m2 ?0 D3 b( Z  1、echo在分歧的外壳轨范顶用法不统一,导致剧本轨范兼容性差。如在现实剧本轨范开发过程中,往往需要经由过程一些转义字符来节制提醒信息的显示位置。如echo “\n Please input your Student Num:”暗示换一行显示提醒信息。可是这些转义字符可能在分歧的外壳轨范中代表分歧的寄义;又或者说有的外壳轨范撑持某个转义字符,而有的外壳轨范不撑持。所以说,如不美观裹足本轨范中采用echo作为回显呼吁的话,则很可能在分歧的外壳情形中,其最终显示的结不美观会有很大的差异,其兼容性欠好。凡是这种情形下,系统工程师需要预先操作IF语句来判定当前所采用的外壳轨范,然后再按照外壳轨范的种类选择执行合适的echo语句(各个echo语句按照外壳轨范撑持的转义字符分歧而采用分歧的转义字符或者响应的语法)。这么措置的话虽然可行,可是无疑增添了剧本的代码量。而且当剧本轨范斗劲复杂时,也会影响其执行的机能。
$ Q" `: |: ?' Z  2、其功能不够壮大。虽然echo呼吁呈现的斗劲早,可是这个呼吁的功能这么多年来没有多大的扩展。如上例所示,学生的编号可能为8个整数型的数字。而操作echo呼吁就无法节制内容输出的名目,而且也无法节制输出字符串的宽度等等。所以说echo呼吁的功能斗劲有限。如不美观要操作echo呼吁开显示一些复杂的信息时,往往还需要经由过程其他的一些语句来辅佐。所以说,此刻echo呼吁往往只是在shell中简单的回显一些信息,如当前的情形变量等等。而越来越少的系统工程师会在编写剧本轨范的过程顶用到这个呼吁。) M2 e$ e" N1 t, F8 D
  综上所述,在编写剧本轨范的过程中,echo呼吁正在逐渐退出舞台。虽然其具有斗劲久远的历史,可是因为其功能上、兼容性上的一些缺陷,系统工程师此刻很少会采用echo呼吁来编写剧本轨范。可是裹足本轨范的运行中,终端中仍然需要输出一些有用的信息。既然系统工程师有这方面的需要,而echo呼吁又无法真正的知足这个需要。在市场有需求的情形下,就必定会出来一个合用的替代品。Printf呼吁就在这种布景下应用而生了。8 \) j) _$ D5 E# b/ C
二、Printf呼吁优势剖析。
4 ^$ w" A' Y4 V4 {# B+ x. l  printf呼吁也是一个回显呼吁,使Unix操作系统的外部呼吁。到今朝为止,只有bash shell外壳轨范中把这个呼吁算作内部呼吁。虽然这有点藐小的差异,可是这并不会影响这个呼吁的兼容性问题。那么这个呼吁与echo呼吁对比,具有什么优势呢?为什么这个呼吁为成为echo呼吁的最合适的替代品呢?# n7 L9 t* S% J3 |
  1、这个呼吁的兼容性斗劲高。这个printf呼吁所采用的字符串名目与c说话轨范中的一个同名函数使用的字符串名目一模一样。也就是说,在C说话中也有这么一个printf函数,其所采用的字符串名目是不异的。而众所周知,虽然此刻Unix操作系统有分歧的版本,其外壳轨范也多达四种。可是他们都是经由过程C说话来开发完成的。所以说,这个Printf呼吁就可以在当前的Unix操作系统中使用,其可以兼容所有的外壳轨范。这是echo呼吁所无法替代的。因为兼容性斗劲高,那么在编写剧本轨范的时辰就不用去判定当前使用的shell到底是哪一种了。这可以节约不少的代码编写,提高剧本轨范的开发效率。同时,统一个剧本轨范在分歧的shell中运行,其最终显示的结不美观都是一样的。这种兼容性正式系统工程师在编写剧本轨范时所追求的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 16:46 , Processed in 0.304977 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表