第6章 命令执行顺序.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 命令执行顺序

第6章 命令执行顺序 下载 第6章 命令执行顺序 在执行某个命令的时候,有时需要依赖于前一个命令是否执行成功。例如,假设你希望 将一个目录中的文件全部拷贝到另外一个目录中后,然后删除源目录中的全部文件。在删除 之前,你希望能够确信拷贝成功,否则就有可能丢失所有的文件。 在本章中,我们将讨论: 命令执行控制。 命令组合。 如果希望在成功地执行一个命令之后再执行另一个命令,或者在一个命令失败后再执行 另一个命令,和||可以完成这样的功能。相应的命令可以是系统命令或 shell脚本。 Shell还提供了在当前shell或子shell中执行一组命令的方法,即使用()和 {}。 6.1 使用 使用的一般形式为: 命令1 命令2 这种命令执行方式相当地直接。 左边的命令(命令1)返回真(即返回0,成功被执行) 后,右边的命令(命令 2)才能够被执行;换句话说,“如果这个命令执行成功 那么执 行这个命令”。 这里有一个使用的简单例子: 在上面的例子中, 前面的拷贝命令执行成功,所以 后面的命令(echo命令)被执 行。 再看一个更为实用的例子: $ mv /apps/bin /apps/dev/bin rm -r /apps/bin 在上面的例子中,/apps/bin目录将会被移到/apps/dev/bin目录下,如果它没有被成功执行, 就不会删除/apps/bin目录。 在下面的例子中,文件 quarter_end.txt首先将被排序并输出到文件 quarter.sorted中,只有 这一命令执行成功之后,文件quarter.sorted才会被打印出来: $ sort quarter_end.txt quarter.sorted lp quarter.sorted 6.2 使用|| 使用||的一般形式为: 命令1 || 命令2 47 第6章 命令执行顺序 下载 ||的作用有一些不同。如果 ||左边的命令(命令 1)未执行成功,那么就执行 ||右边的命令 (命令2);或者换句话说,“如果这个命令执行失败了 || 那么就执行这个命令”。 这里有一个使用||的简单例子: 在上面的例子中,拷贝命令没有能够被成功执行,因此 ||后面的命令被执行。 这里有一个更为实用的例子。我希望从一个审计文件中抽取第 1个和第5个域,并将其输 出到一个临时文件中,如果这一操作未成功,我希望能够收到一个相应邮件: 在这里不只可以使用系统命令;这里我们首先对 month_end.txt文件执行了一个名为comet 的shell脚本,如果该脚本未执行成功,该 shell将结束。 $ comet month_end.txt || exit 6.3 用()和{ }将命令结合在一起 如果希望把几个命令合在一起执行, shell提供了两种方法。既可以在当前 shell也可以在 子shell中执行一组命令。 为了在当前shell中执行一组命令,可以用命令分隔符隔开每一个命令,并把所有的命令 用圆括号()括起来。 它的一般形式为: (命令1;命令2;...) 如果使用{}来代替(),那么相应的命令将在子 shell而不是当前shell中作为一个整体被执 行,只有在{}中所有命令的输出作为一个整体被重定向时,其中的命令才被放到子 shell中执 行,否则在当前shell执行。它的一般形式为: {命令1;命令2;...} 我很少单独使用这两种方法。我一般只和 或||一起使用这两种方法。 再回到前面那个comet脚本的例子,如果这个脚本执行失败了,我很可能会希望执行两个 以上的命令,而不只是一个命令。我可以使用这两种方法。这是原先那个例子: $ comet month_end.txt || exit 现在如果该脚本执行失败了,我希望先给自己发个邮件,然后再退出,可以用下面的方 法来实现: 在上面的例子中,如果只使用了命令分隔符而没有把它们组合在一起, shell将直接执

文档评论(0)

htfyzc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档