首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得退出代码和标准输出?

如何获得退出代码和标准输出?
EN

Stack Overflow用户
提问于 2022-01-01 13:04:50
回答 1查看 324关注 0票数 1

在shell (如Bash和Zsh )中,我们可以使用获得命令的标准输出。例如:

代码语言:javascript
复制
info=$(./run-a-program arg1 arg2)

我们还可以从获得$?的退出代码。对于一些命令(如timeout )来说,它很有用。例如:

代码语言:javascript
复制
# run the program in 10 seconds
timeout 10s ./run-a-program arg1 arg2
if (( $? == 124 )) {
  echo "Timeout!"
}

那么,是否有一种同时获得退出代码和标准输出的方法?

EN

回答 1

Stack Overflow用户

发布于 2022-01-01 13:39:24

您仍然可以使用$?

代码语言:javascript
复制
info=$(./run-a-program arg1 arg2)
echo "run-a-program returned $?" 

但是请注意,实际上很少需要直接引用$?。也许您希望编写如下代码:

代码语言:javascript
复制
info=$(./run-a-program)
if [ $? = 0 ]; then ...; fi

但这可以写成:

代码语言:javascript
复制
if info=$(./run-a-program); then ...; fi

有时,会使用除零/非零以外的特殊返回码,您可能需要执行case $? in,但这是您唯一需要显式引用$?的时间。摆脱查看$?的习惯;如果不这样做,代码就更容易维护。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70549056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档