我想在echo "after VAR=$VAR"
行之前退出此脚本,fails-sometimes.sh
退出非0代码。
#!/bin/bash
set -eux
echo "before"
export VAR=$(./fails-sometimes.sh)
echo "after VAR=$VAR"
此处的“-e”选项不会停止脚本。 我该怎么写呢?
答案 0 :(得分:3)
set -e
在此处不起作用,因为export
命令仍然成功。这是set -e
完成预期的几个示例之一,但是not really what you'd expect。
一般来说,避免将export
,local
和类似的赋值与命令替换一起使用是一种很好的做法,因为它们会抑制替换的退出代码。喜欢split it into two separate commands:
export VAR
VAR=$(./fails-sometimes.sh)
如果命令替换失败,那么第二个命令将会失败(因此会因set -e
而退出脚本)。