如果函数失败,我想退出脚本。通常这不是问题,但如果使用进程替换,就会出现问题。
$ cat test.sh
#!/bin/bash
foo(){
[ "$1" ] && echo pass || exit
}
read < <(foo 123)
read < <(foo)
echo 'SHOULD NOT SEE THIS'
$ ./test.sh
SHOULD NOT SEE THIS
基于CodeGnome’s answer这似乎有效
$ cat test.sh
#!/bin/bash
foo(){
[ "$1" ] && echo pass || exit
}
read < <(foo 123) || exit
echo 'SHOULD SEE THIS'
read < <(foo) || exit
echo 'SHOULD NOT SEE THIS'
$ ./test.sh
SHOULD SEE THIS
最佳答案
如果发生任何失败,您可以使用set -e
退出脚本。对于较小的脚本来说,这通常就足够了,但缺乏粒度。
您还可以直接检查任何命令或函数的返回状态,或检查 $?
变量。例如:
foo () {
return 1
}
foo || { echo "Return status: $?"; exit 1; }
关于Bash 退出和进程替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11622408/