shell的set命令实例用法
这篇文章主要介绍“shell的set命令实例用法”,在日常操作中,相信很多人在shell的set命令实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”shell的set命令实例用法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联公司是一家专业提供潮州企业网站建设,专注与做网站、成都网站建设、HTML5建站、小程序制作等业务。10年已为潮州众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
不带选项执行set命令
不带选项执行set命令时,会输出当前shell的所有变量,输出格式就和shell脚本里面的变量赋值的格式一样:name=value
。因此,set命令的输出可以直接作为一个stdin的输入。
基本语法
set通过选项来开关shell的不同特性,每个特性都对应一个选项。每个特性都有两种配置方式:
一种是通过
set -e
和set +e
这种形式,即直接指定选项。另一种是通过
set -o errexit
和set +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://azwzsj.com/article/jeiehh.html