我开始在我的bash脚本中使用set -e, ,并发现短格式的条件表达式会中断脚本执行。当使用set时,bash单行条件失败-e
例如,下面的线应该检查是$ var不为空:
[ -z "$var" ] && die "result is empty"
但导致从脚本无声退出时是$ var具有非零长度。
我曾经在许多地方,这种形式的条件表达式...
我应该怎么做,使之正常运行?用“if”构造重写所有内容(这会很丑陋)?或放弃“set -e”?
编辑:大家都在问代码。这里充满[无]工作示例:
#!/bin/bash
set -e
function check_me()
{
ws="smth"
[ -z "$ws" ] && echo " fail" && exit 1
}
echo "checking wrong thing"
check_me
echo "check finished"
我希望它之前和之后的函数调用打印两相呼应。 但它在check_me函数中静静失败。输出是:
checking wrong thing
你在哪里使用'set -e'?显示完整的代码。 – 2012-03-27 08:46:53
你所描述的不应该发生(我不能再现)。这是专门列出的情况下shell不会退出手册页。 – Mat 2012-03-27 08:49:46
这可能是在这里有意义的用法。我已经添加了一个示例脚本(完整)。 – LiMar 2012-03-27 09:09:09