我想制作一个循环命令,如果它以低使用率运行,将禁用我的CPU。首先,我试着做一个像这样的简单命令:
A=[ $top -bn1 | grep CPU |head -1 |sed s/"%"/""/g|awk '{print $8}' ]
B="2"
if [ $A -gt $B ]
then
echo a
else
echo b
fi
但它说“找不到并意外”
答案 0 :(得分:0)
此:
A=[ $top -bn1 | grep CPU |head -1 |sed s/"%"/""/g|awk '{print $8}' ]
根本没有任何意义。我猜你打算写:
A="$(top -bn1 | grep CPU | head -1 | sed s/%//g | awk '{print $8}')"
编辑添加:运行上述内容后,您应该检查"$A"
是否扩展到您认为的功能。 (特别注意,它必须是一个整数,因为shell算法只支持整数。)
答案 1 :(得分:0)
如果希望A
成为您编写的命令的输出,请使用以下语法:
A=$( $top -bn1 | grep CPU |head -1 |sed s/"%"/""/g|awk '{print $8}' )
A
和B
是字符串变量。您可以使用语法A=$(($A))
将其转换为整数。但是,我建议您更改if语句以将字符串作为参数。
警告:这仅适用于整数。要比较 float ,您可以使用bc
命令。
res=$(echo "10.5>10.4" | bc) # res=1 in this case
res=$(echo "10.5<10.4" | bc) # res=0 in this case
最后,您的脚本是:
A=$( $top -bn1 | grep CPU |head -1 |sed s/"%"/""/g|awk '{print $8}' )
B="2"
res=$( echo "$A>$B" |bc )
if [[ $res -eq 1 ]]
then
# True
echo "CPU usage to high, value is $A"
else
# False
echo "CPU usage OK, lower than $B"