六、set -o pipefail set -e有一个例外情况,就是不适用于管道命令。 所谓管道命令,就是多个子命令通过管道运算符(|)组合成为一个大的命令。Bash 会把最后一个子命令的返回值,作为整个命令的返回值。也就是说,只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,set -e就失效了。 请看下面这个例子。 #!/
set -o errexit 六、set -o pipefail set -e有一个例外情况,就是不适用于管道命令。 所谓管道命令,就是多个子命令通过管道运算符(|)组合成为一个大的命令。Bash 会把最后一个子命令的返回值,作为整个命令的返回值。也就是说,只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,set...
这时可以暂时关闭set -e,该命令执行结束后,再重新打开set -e。 set +e command1 command2 set -e 上面代码中,set +e表示关闭-e选项,set -e表示重新打开-e选项。 还有一种方法是使用comma...
参数:set x 或 set o xtrace。作用:在执行每条命令之前,先将该命令打印到标准错误输出,对于调试复杂脚本非常有用。在任何命令失败时立即终止脚本:参数:set e 或 set o errexit。作用:当脚本中的任何命令失败时,脚本会立即终止执行,有助于确保脚本的健壮性。确保管道中的错误被捕获并导致脚本...
https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html 功能描述 使用set命令可以显示和设置Shell变量,修改子 Shell 环境的运行参数,定制环境。 $ set 常用参数 -u 参数【-o nounset】 处理未设置的变量和特殊参数以外的参数 '@' 或者 '*' 作为执行参数扩展时的错误 ...
bash内置命令set引起的问题 问题背景 最近在编译yocto工程,设置环境变量时,突然发现oe-init-build-env无法正常工作了,正常情况下BDIR="build",但莫名奇妙生成了一个x的目录,有点懵。 # normaldir$.oe-init-build-env dir/build$# abnormaldir$.oe-init-build-env...
set 命令在 bash 和sh(Bourne Shell)中有一些区别 语法:bash 和sh 的set 命令基本相同,但在某些选项和参数上有所不同。例如,bash 支持-o 选项来设置 shell 选项,而 sh 则使用 -s 选项。 可用选项:bash 和sh 的set 命令支持不同的选项。bash 支持更多的选项,例如 -o、-x、-v 等,这些选项在 sh 中...
使用set命令在Shell编程中发挥着关键作用,能够管理环境变量和调整子Shell执行参数,进一步自定义运行环境。set命令具有多种参数以适应不同的需求。例如,当使用特殊参数"@"或"*"作为执行参数扩展时的错误处理,程序将向标准错误写入错误信息并退出非交互式Shell。在脚本执行中,若未定义的参数被忽略,set...
当Bash执行脚本时,会创建一个新的Shell,脚本的执行环境由Bash自动设置一些参数。使用set命令可以定制这个环境,官方文档列出了多个可设置的参数。若在命令行中不带参数直接运行set,则会显示当前的环境变量和Shell函数。其中,set -u(或写成-o nounset)在脚本执行时,遇到不存在的变量会立即报错并停止...
/usr/bin/env bashset-xechobar 执行上面的脚本,结果如下。 $ bash script.sh +echobar bar 可以看到,执行echo bar之前,该命令会先打印出来,行首以+表示。这对于调试复杂的脚本是很有用的。 -x还有另一种写法-o xtrace。 set-o xtrace 脚本当中如果要关闭命令输出,可以使用set +x。