Unix 如何使用awk验证HTT,并输出一个字符串作为结果?

Unix 如何使用awk验证HTT,并输出一个字符串作为结果?,unix,command-line,awk,Unix,Command Line,Awk,我想知道在几个unix机器上是否启用了hypterthreading。我使用的命令是: egrep 'siblings|cpu cores' /proc/cpuinfo | head -2 >> siblings : 8 >> cpu cores : 4 这(我认为?)是相当可靠的——如果兄弟姐妹是内核大小的两倍,那么HTT就启用了。但是,我想在返回“True”或“False”的验证脚本中使用它-这是否可能使用awk或类似的方法 更新:尝试以下答案后,进行一些修改:

我想知道在几个unix机器上是否启用了hypterthreading。我使用的命令是:

egrep 'siblings|cpu cores' /proc/cpuinfo | head -2
>> siblings : 8 
>> cpu cores : 4
这(我认为?)是相当可靠的——如果兄弟姐妹是内核大小的两倍,那么HTT就启用了。但是,我想在返回“True”或“False”的验证脚本中使用它-这是否可能使用
awk
或类似的方法

更新:尝试以下答案后,进行一些修改:
awk'/sides/{val=$3;}/cpu核心/{if(val==2*$4)退出0;else退出1}'/proc/cpuinfo END{if($?)打印“启用”;else打印“禁用”}

我得到以下错误:
/bin/bash:-c:第0行:意外标记附近的语法错误
(' /bin/bash:-c:第0行:
awk'/sides/{val=$3;}/cpu核心/{if(val==2*$4)退出0;else退出1}'/proc/cpuinfo结束{if($?)打印“启用”;else打印“禁用”}

/sides/
匹配
sides
$3
提取值8

/cpu cores/
匹配
cpu cores
$4
提取值4

if(val==2*$4)
检查值是否为双精度

成功返回
0

失败时返回
1

编辑

如果要打印这些消息,可以更轻松地使用shell
if
语句

    awk '/siblings/{val=$3;} /cpu cores/{if(val==2*$4) exit 0; else exit 1}' /proc/cpuinfo 
    if [ $? -eq 0]
    then
    echo "ENABLED"
    else 

echo "DISABLED"
fi
如果仍要在
awk
中执行,请不要使用
exit
,而是使用
END
块中的
print

awk '/siblings/{val=$3;} /cpu cores/{if(val==2*$4) {print "ENABLED"; exit} else {print "DISABLED"; exit} }' /proc/cpuinfo

grep | egrep etc:
如果找到所选行,则退出状态为0,如果未找到,则退出状态为1。如果发生错误,则退出状态为2。(注意:POSIX错误处理代码应检查“2”或更高。)
退出值存储在变量
$?
中,这似乎就是我要找的,尽管我需要稍作修改-我对
awk
非常陌生,因此,抱歉。我已更新了我的问题以反映这一新问题(但仍然非常相关)问题。很好,谢谢!只是好奇,shell脚本必须以换行结束吗?有没有办法在一行中运行shell脚本(即,我在一个配置文件中读取,每个命令限制为一行)没有。只需使用
分开命令,例如上面的
if
可以作为
if[$?-eq 0]写在一行中;然后echo“ENABLED”;else echo“DISABLED”;fi
Oh neato,谢谢!因此,我在单行awk命令中从
else
位开始出现语法错误。知道为什么吗?
awk '/siblings/{val=$3;} /cpu cores/{if(val==2*$4) {print "ENABLED"; exit} else {print "DISABLED"; exit} }' /proc/cpuinfo