当前位置: 首页 > Linux

Bash提示:使用set内置命令帮助调试shell脚本

时间:2023-04-06 11:26:13 Linux

在bash中,您可以使用set内置命令来设置和查看shell的属性。这些属性影响shell的不同行为。下面介绍一些常用的属性。请参阅set命令的帮助。set命令说明如下:set:set[-abefhkmnptuvxBCHP][-ooption-name][--][arg...]改变shell属性和位置参数的值,或者显示名字和值shell变量。使用+而不是-会导致这些标志被关闭。也就是说,set命令后面可以跟要设置的shell属性选项。如果选项以-开头,则设置为打开该选项。如果选项以+开头,则设置为关闭该选项。遇到错误报告后使用set-e选项停止执行并查看helpset命令。-e选项解释如下:-e如果命令以非零状态退出,则立即退出。也就是说,set-e会遇到任何非零状态。当命令返回值0时,退出当前shell。在脚本开头的#!/bin/bash语句的下一行添加set-e语句,那么当脚本执行时,在执行过程中遇到任何错误都会终止脚本,避免后续脚本的执行声明。具体例子如下:#!/bin/bashset-e从编程的角度来看,set-e选项的作用类似于C语言的assert()函数,遇到就停止一个错误。在调试shell脚本时,如果遇到意外错误,可以使用该选项及时停止脚本,找到离错误位置最近的语句。使用set-x选项打开debug开关查看helpset命令。-x选项解释如下:-x在执行命令时打印命令及其参数。即set-x会打印出具体执行的命令和命令的参数。这些参数是bash扩展后的参数。可以很方便的看到每次变量值扩容的结果,变量是否扩容为空,导致参数个数发生变化等等。如前所述,将选项开头的-更改为+将关闭该选项,而set+x命令将关闭调试开关。具体例子如下:$set-x$lstest*+ls--color=autotestcase.shtestfile$set+x这里先执行set-x命令开启调试。然后执行lstest*命令,可以看到展开的命令是ls--color=autotestfiletestcase.sh。从展开结果可以看出,test*展开为当前目录下以“test”开头的文件名,有助于理解*通配符的展开结果。可以在shell脚本中使用类似如下的语句来设置该选项:#!/bin/bashset-x在学习bash通配符和各种扩展表达式时,set-x可以打印出具体的扩展结果,方便理解。使用set-v回显输入的命令,查看帮助set命令。-v选项解释如下:-v打印读取的shell输入行。也就是说,set-v选项将回显输入的命令。与set-x的区别在于set-x显示扩展结果,而set-v显示输入的命令本身。具体例子如下:$set-v$lstest*lstest*testcase.shtestfile可以看到设置了set-v选项,执行lstest*命令后,回显的内容是“lstest*”.而不是在test*扩展后回显以“test”开头的文件名。