Bash:如果服务器上没有足够的内存,则尝试回显字符串

时间:2014-04-01 12:18:40

标签: bash memory

如果服务器上没有足够的内存,我希望我的脚本能回显一个字符串。我已经尝试了很多东西,但是脚本不起作用,我担心它会因为将字符串转换为数字?

这是我所拥有的:

freem=`free -m | sed -n '3p' | tail -c6 | xargs`
max_memory=1000
if [ freem -lt max_memory ]
then echo 'not enough'
else echo 'yay'
fi

freem确实有正确的值,但if不起作用,它说:

check_memory.sh: 3: [: Illegal number: freem

我尝试了很多东西,但我无法让它发挥作用:(。

有人可以帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:1)

fedorqui的答案已经显示了你错过了什么(变量名的$)。我会使用类似的东西:

let freem=$(free -m | awk '/cache:/ {print $NF}')
let max_memory=1000
if [ $freem -lt $max_memory ]
then echo 'not enough'
else echo 'yay'
fi

为了便于阅读,我更喜欢使用$( )而不是后退。通过使用let,您可以声明arg是一个算术表达式,这在比较值时更有意义。