我编写了这个脚本来关闭进程,但我无法将awk
结果 ( var1
) 与 Integer:进行比较var1 -gt 5000
。
我的脚本:
#!/bin/bash
var1= free -m |awk 'NR == 2'| awk '{print $3}'
var2= ps aux | grep '/opt/skype/skype' | grep -v grep | awk '{print $2}'
while true;
do
if [ $var1 -gt 5000 ]; then
echo "La memoria se ha excedido cerrando porcesos"
kill -9 $var2
break
else
echo "La memoria aun es estable $var1"
fi
done
这可能是 bash 中的转换问题吗?
答案1
您可以在 bash 和 ksh 中转换变量(使用declare -i var
ortypeset -i var
表示整数),但我认为这不是您的问题。
var1
当正常运行命令时,以下内容将设置为空。
var1= free -m |awk 'NR == 2'| awk '{print $3}'
如果您希望将 free 和 awk 的输出设置为 var1,则上面的内容应为:
var1=$( free -m |awk 'NR == 2'| awk '{print $3}' )
答案2
谢谢 DarkHeart,我的脚本有效。
这是生成的代码:
#!/bin/bash
while true; do
var1=$( free -m |awk 'NR == 2'| awk '{print $3}' )
var2=$( ps aux | grep '/opt/skype/skype' | grep -v grep | awk '{print $2}' )
if [ $var1 -gt 5460 ]; then
echo "La memoria se ha excedido cerrando porcesos"
kill -9 $var2
break
else
echo "La memoria aun es estable $var1"
fi
sleep 1
done