2

如果函数失败,我想退出脚本。通常这不是问题,但如果您使用过程替代,它就会成为问题。

$ 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 的回答,这似乎可行

$ 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
4

1 回答 1

2

您可以使用set -e在任何失败时退出脚本。这对于较小的脚本通常就足够了,但缺乏粒度。

您还可以直接检查任何命令或函数的返回状态,或检查$?变量。例如:

foo () {
  return 1
}

foo || { echo "Return status: $?"; exit 1; }
于 2012-07-24T00:26:55.843 回答