[英]bash function fails with set -e
我在使用set -e
时发现了一些奇怪的行为。 一个简单的代码: [ ${var} } && echo "text"
在函数外工作正常,但当相同的代码在函数中时会导致脚本退出。 这仅在var=""
时发生。
如果我使用||
代码也可以正常工作或者如果我将 var 设置为某些东西。 有人对此有解释吗?
#!/bin/bash
#version 4.4.20(1)
#set -x
set -e
var=
[ ${var} ] && echo "Test before function"
echo "Before function"
function test {
[ ${var} ] && echo "Test inside function"
}
test
echo end
考虑以下:
false && true
以退出状态false
退出。
函数的默认返回值是它运行的最后一件事的返回值。
set -e
被定义为如果任何未经检查的命令(“未经检查”是一个词,在这种情况下,具有复杂的、充满警告的、依赖于版本的、不可移植的以及通常令人惊讶的定义)返回退出,则导致提前终止除 true 以外的状态。
因此,当您有一个函数在返回之前运行a-false-thing && a-true-thing
作为其最后一个命令时,该函数本身将返回 false,并且set -e
如果认为该函数的调用“已检查”将终止执行.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.