shell的set命令实例用法

这篇文章主要介绍“shell的set命令实例用法”,在日常操作中,相信很多人在shell的set命令实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”shell的set命令实例用法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联公司是一家专业提供潮州企业网站建设,专注与做网站、成都网站建设、HTML5建站、小程序制作等业务。10年已为潮州众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

不带选项执行set命令

不带选项执行set命令时,会输出当前shell的所有变量,输出格式就和shell脚本里面的变量赋值的格式一样:name=value。因此,set命令的输出可以直接作为一个stdin的输入。

基本语法

set通过选项来开关shell的不同特性,每个特性都对应一个选项。每个特性都有两种配置方式:

  • 一种是通过set -eset +e这种形式,即直接指定选项。

  • 另一种是通过set -o errexitset +o errexit这种形式,即通过o这个选项来指定选项名。

我想你一定对选项是用+号还是-号十分好奇。在set命令中,选项前面跟着-号表示开启这个选项,+表示关闭这个选项。

选项介绍

-o

执行set -o会输出当前的set选项配置情况:

~/programming/test$ set -o
allexport       offbraceexpand     onemacs           onerrexit         offerrtrace        offfunctrace       offhashall         onhistexpand      onhistory         onignoreeof       offinteractive-comments    onkeyword         offmonitor         onnoclobber       offnoexec          offnoglob          offnolog           offnotify          offnounset         offonecmd          offphysical        offpipefail        offposix           offprivileged      offverbose         offvi              offxtrace          off

+o

执行set +o也是输出当前的set选项的配置情况,只不过输出形式是一系列的set命令。这种输出形式一般用于重建当前的set配置项时使用。

~/programming/test$ set +o
set +o allexportset -o braceexpandset -o emacsset +o errexitset +o errtraceset +o functraceset -o hashallset -o histexpandset -o historyset +o ignoreeofset -o interactive-commentsset +o keywordset -o monitorset +o noclobberset +o noexecset +o noglobset +o nologset +o notifyset +o nounsetset +o onecmdset +o physicalset +o pipefailset +o posixset +o privilegedset +o verboseset +o viset +o xtrace

-e or -o errexit

设置了这个选项后,当一个命令执行失败时,shell会立即退出。

-n or -o noexec

设置了这个选项后,shell读取命令,但是不会执行它们。这个选项可以用来检查shell脚本是否存在语法错误。

-u or -o unset

设置了这个选项之后,当shell要扩展一个还未设置过值的变量时,shell必须输出信息到stderr,然后立即退出。但是交互式shell不应该退出。

-x or -o xtrace

设置了这个选项之后,对于每一条要执行的命令,shell在扩展了命令之后(参数扩展)、执行命令之前,输出trace到stderr。

-o pipefail

这个选项会影响管道的返回值。默认情况下,一个管道的返回值是最后一个命令的返回值,比如cmda | cmdb | cmdc这个管道,返回值是由cmdc命令的返回值决定的。如果指定了pipefail选项,那么管道的返回值就会由最后一个失败的命令决定,意思就是有命令失败就会返回非0值。如果所有命令都成功,则返回成功。

例子

#!/bin/bashset -o xtraceset -o errexit  # 可以把这样注释掉看下执行效果有什么不一样。echo "Before"ls filenoexists  # ls也不存在的文件echo "After"

到此,关于“shell的set命令实例用法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享名称:shell的set命令实例用法
文章起源:http://ybzwz.com/article/jeiehh.html