如果服务器上没有足够的内存,我希望我的脚本能回显一个字符串。我已经尝试了很多东西,但是脚本不起作用,我担心它会因为将字符串转换为数字?
这是我所拥有的:
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
我尝试了很多东西,但我无法让它发挥作用:(。
有人可以帮助我吗?
谢谢
答案 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是一个算术表达式,这在比较值时更有意义。