首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Bash脚本的输出中删除"/usr/bin/sensors“

从Bash脚本的输出中删除"/usr/bin/sensors“
EN

Stack Overflow用户
提问于 2021-01-02 09:30:00
回答 2查看 54关注 0票数 1

所以我有这段代码:

代码语言:javascript
复制
if type -P sensors 2>/dev/null; then
  returnString=`sensors`
  #amd
  if [[ "${returnString/"k10"}" != "${returnString}" ]] ; then
    $SENSORS | grep Tdie | $CUT -d ' ' -f 10 | { echo "{"; cat; echo "}"; } | tr -d '\n'
  #intel
  elif [[ "${returnString/"core"}" != "${returnString}" ]] ; then
    fromcore=${returnString##*"coretemp"}
    $ECHO ${fromcore##*Physical}  | $CUT -d ' ' -f 3 | $CUT -c 2-5 | _parseAndPrint
  fi
else
  $ECHO "[]" | _parseAndPrint
fi

它的输出是:

代码语言:javascript
复制
/usr/bin/sensors
{+31.9°C}

但是期望的输出是:

代码语言:javascript
复制
{+31.9°C}

传感器输出:

代码语言:javascript
复制
/usr/bin/sensors
nvme-pci-0100
Adapter: PCI adapter
Composite:    +33.9°C  (low  =  -0.1°C, high = +74.8°C)
                       (crit = +79.8°C)

k10temp-pci-00c3
Adapter: PCI adapter
Vcore:         1.12 V  
Vsoc:        888.00 mV 
Tctl:         +31.1°C  
Tdie:         +31.1°C  
Icore:         8.00 A  
Isoc:          5.00 A  

我真的更喜欢让if type -P sensors 2>/dev/null; then留在原地,这样它仍然可以检测到它是英特尔还是AMD。

这行代码在脚本文件中运行,该文件可以在here中找到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-02 10:08:05

我现在不是最聪明的,应该看一下代码的其余部分,应该睡xD。我可以删除检查“传感器”是否可访问的检查(至少我认为这是它的用途)。所以从

代码语言:javascript
复制
      if type -P sensors 2>/dev/null; then
        returnString=`sensors`
        #amd
        if [[ "${returnString/"k10"}" != "${returnString}" ]] ; then
          sensors | grep Tdie | $CUT -d ' ' -f 10 | { echo "{"; cat; echo "}"; } | tr -d '\n'
        #intel
        elif [[ "${returnString/"core"}" != "${returnString}" ]] ; then
          fromcore=${returnString##*"coretemp"}
          $ECHO ${fromcore##*Physical}  | $CUT -d ' ' -f 3 | $CUT -c 2-5 | _parseAndPrint
        fi
      else
        $ECHO "[]" | _parseAndPrint
      fi

我做了

代码语言:javascript
复制
        returnString=`sensors`
        #amd
        if [[ "${returnString/"k10"}" != "${returnString}" ]] ; then
          sensors | sed -nE 's/^Tdie: *([^ ]*)/{\1}/p'
        #intel
        elif [[ "${returnString/"core"}" != "${returnString}" ]] ; then
          fromcore=${returnString##*"coretemp"}
          $ECHO ${fromcore##*Physical}  | $CUT -d ' ' -f 3 | $CUT -c 2-5 | _parseAndPrint
        fi
票数 0
EN

Stack Overflow用户

发布于 2021-01-02 17:06:26

问题出在type命令上。您只需要此命令的退出状态,但在本例中,它将传感器命令的路径写入stdout。您应该将其stdout重定向到/dev/null。

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

https://stackoverflow.com/questions/65535280

复制
相关文章

相似问题

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