Bash:如果没有';服务器上没有足够的内存
我希望我的脚本回显一个字符串,以防服务器上没有足够的内存。我尝试了很多东西,但是脚本不起作用,恐怕是因为将字符串转换为数字 以下是我得到的:Bash:如果没有';服务器上没有足够的内存,bash,memory,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确实具有正确的值,但如果不起作用,则表示: check_memory.sh:
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确实具有正确的值,但如果不起作用,则表示:
check_memory.sh: 3: [: Illegal number: freem
我试过很多东西,但都不能成功
谁能帮帮我吗
谢谢你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
为了可读性,我更喜欢使用
$()
而不是反勾号。通过使用让说明arg是一个算术表达式,这在比较值时更有意义。您只需要使用$var
而不是var
。在您的情况下,如果[$freem-lt$max\u memory]
。好的,谢谢。但快速提问,let在bash脚本(.sh)中似乎不起作用,这是为什么?(我刚刚删除了它,它似乎起作用)这很奇怪。在我的系统上,bash与let
没有任何问题。您使用的是哪个版本的bash?(我在bash 3.2.25和4.1.2上试用过)。4.2.45(最新的ubuntu).尽管我不明白那部分的意思,但没关系,它是有效的,这才是最重要的。谢谢你的帮助:)