我有一个脚本使用传感器来获取Ubuntu中的CPU临时值。
IN="`/usr/bin/sensors -f | grep 'Core ' | cut -f2 -d"+" | cut -f1 -d '.'`"
echo $IN
它会产生这样的结果
96 100 98 102
我需要做的是能够像cpu1一样调用它来获取第一个,cpu2来获取第二个,依此类推。我需要拆分它以便我可以使用MRTG监控核心温度,可能有更好的方法,但我还没找到。
答案 0 :(得分:4)
您可以将$IN
转换为如下数组:
TEMPERATURES=($IN)
然后你可以索引到那个数组以获得特定的温度;例如:
echo ${TEMPERATURES[0]}
如果将命令行参数传递给脚本,则可以将其用作数组索引:
WHICH=$1 # 1st command line arg; $0 is name of script
TEMPERATURES=($IN)
echo ${TEMPERATURES[$WHICH]}
对脚本的调用可能如下所示(假设脚本名为cpu
):
$ ./cpu 0
96
$ ./cpu 1
100
$ ./cpu 2
98
$ ./cpu 3
102
答案 1 :(得分:2)
IN="96 100 98 102"
I=0
for val in $IN; do
I=$((I+1))
eval "cpu$I=$val"
done
echo $cpu1
我从字面上回答了如何获得$ cpu1等,但我建议你做@Richard建议的并使用数组:)
答案 2 :(得分:1)
您可以使用awk在单个管道中执行此操作,而不是使用大量管道来提取CPU温度:
#!/bin/sh
/usr/bin/sensors -f | awk -F"[+.]" -v c="^Core $1" '$0~c{print $2}'
用法:
$./cpu 0
$./cpu 1
$./cpu 2