首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在tcsh中,如何在反引号中获得命令的退出状态?

在tcsh中,如何在反引号中获得命令的退出状态?
EN

Stack Overflow用户
提问于 2012-07-10 10:26:41
回答 1查看 4.3K关注 0票数 1

我的tcsh启动脚本中有以下代码:

代码语言:javascript
复制
set _color_count = `sh -c "tput -T${TERM}-256color colors 2>/dev/null"`
if ($? == 0) then  # check if it was a valid terminal type
    if ($_color_count != 256) then  # sanity-check
        echo "Warning: Color count '$_color_count' for '${TERM}-256color' is not 256"
    endif
    setenv TERM "${TERM}-256color"
endif

我的问题是退出状态($?)始终为零,即使tput命令由于终端类型无效而返回非零退出状态时也是如此。如果我没有捕获命令的输出,检查退出状态会很好:

代码语言:javascript
复制
sh -c "tput -T${TERM}-256color colors 2>/dev/null"

我如何确定tput命令是否返回了一个非零的退出状态,因为它是在反引号中的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-10 10:26:42

这是在tcsh版本6.17.05中引入的一种行为改变(参见原始错误报告)。看起来它将在tcsh版本6.18.00时被恢复(参见回归错误报告),但显然它已经进入了野外。

但是,对于受影响的版本,可以在以反引号运行命令之前设置变量$anyerror:

代码语言:javascript
复制
set anyerror
set _color_count = `sh -c "tput -T${TERM}-256color colors 2>/dev/null"`

根据我的tcsh手册页为特殊的shell变量状态

状态最后一个命令返回的状态,除非设置变量anyerror,并且管道中的任何错误或反向引号扩展都将被传播(这是默认的csh行为)。

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

https://stackoverflow.com/questions/11411346

复制
相关文章

相似问题

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