我通常-e在我的Bash脚本中设置,但偶尔我想运行一个命令并获得返回值.
没有做set +e; some-command; res=$?; set -e舞蹈,我怎么能这样做?
Adr*_*rth 63
从bash手册:
如果失败的命令是在&&或||中执行的任何命令的一部分,则shell不会退出 清单[...].
那么,就这样做:
#!/bin/bash
set -eu
foo() {
# exit code will be 0, 1, or 2
return $(( RANDOM % 3 ))
}
ret=0
foo || ret=$?
echo "foo() exited with: $ret"
Run Code Online (Sandbox Code Playgroud)
示例运行:
$ ./foo.sh
foo() exited with: 1
$ ./foo.sh
foo() exited with: 0
$ ./foo.sh
foo() exited with: 2
Run Code Online (Sandbox Code Playgroud)
这是做这件事的规范方式.
也许尝试在子shell中运行有问题的命令,像这样?
res=$(some-command > /dev/null; echo $?)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5776 次 |
| 最近记录: |