如果函數失敗,我想退出腳本。通常情況下這不是問題,但如果使用工藝替代,則會成爲問題。Bash退出和進程替換
$ 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
提示:您的foo構建不會評估您的想法。正如所寫,您的foo函數將始終返回true。你可能希望foo包含'{test -n「$ 1」&& echo pass; } ||退出1'。 – 2012-07-24 00:50:25