这篇文章主要介绍“shell的set命令实例用法”,在日常操作中,相信很多人在shell的set命令实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”shell的set命令实例用法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
不带选项执行set命令时,会输出当前shell的所有变量,输出格式就和shell脚本里面的变量赋值的格式一样:name=value
。因此,set命令的输出可以直接作为一个stdin的输入。
set通过选项来开关shell的不同特性,每个特性都对应一个选项。每个特性都有两种配置方式:
一种是通过set -e
和set +e
这种形式,即直接指定选项。
另一种是通过set -o errexit
和set +o errexit
这种形式,即通过o这个选项来指定选项名。
我想你一定对选项是用+号还是-号十分好奇。在set命令中,选项前面跟着-号表示开启这个选项,+表示关闭这个选项。
执行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
执行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
设置了这个选项后,当一个命令执行失败时,shell会立即退出。
设置了这个选项后,shell读取命令,但是不会执行它们。这个选项可以用来检查shell脚本是否存在语法错误。
设置了这个选项之后,当shell要扩展一个还未设置过值的变量时,shell必须输出信息到stderr,然后立即退出。但是交互式shell不应该退出。
设置了这个选项之后,对于每一条要执行的命令,shell在扩展了命令之后(参数扩展)、执行命令之前,输出trace到stderr。
这个选项会影响管道的返回值。默认情况下,一个管道的返回值是最后一个命令的返回值,比如cmda | cmdb | cmdc
这个管道,返回值是由cmdc命令的返回值决定的。如果指定了pipefail选项,那么管道的返回值就会由最后一个失败的命令决定,意思就是有命令失败就会返回非0值。如果所有命令都成功,则返回成功。
#!/bin/bashset -o xtraceset -o errexit # 可以把这样注释掉看下执行效果有什么不一样。echo "Before"ls filenoexists # ls也不存在的文件echo "After"
到此,关于“shell的set命令实例用法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。