我正在努力解决这个问题。我有一个基本的Bash脚本:
#!/bin/bash
do_exit=0
while [ "$do_exit" == 0 ] ; do
echo $do_exit
do_exit=1
done
这有效。但是,当我想do_exit=1
在if
条件内设置时:
#!/bin/bash
do_exit=0
while [ "$do_exit" == 0 ] ; do
free=`free -m | grep Mem | awk '{print $4}'`
if [ "$free" -gt 0 ]
then
echo $do_exit
do_exit=1
fi & sleep 5;
done
$do_exit
总是0 ...所以永远不存在。我究竟做错了什么?当我想杀死脚本时,我遇到“ breaking”和“ exit 0”相同的问题-它只是继续!)
我一定会误会变量在Bash中如何工作?在Perl(我的常规编程语言)中,您可以在任何地方设置变量(在函数中显式设置它们除外)
有几个错误。
fi & sleep 5;
将if语句作为子进程的条件,因此您无法在父进程中使用该值-gt
用于数字比较,而不是字符串。下面应该为您工作。
#!/bin/bash
do_exit=0
while [ "$do_exit" == 0 ] ; do
free=`free -m | grep Mem | awk '{print $4}'`
if [[ $free -gt 0 ]]; then
do_exit=1
echo ${$do_exit}
fi
sleep 5;
done
您也可以执行break
while循环。检查一下:
#!/bin/bash
while true; do
free=$(free -m | grep Mem | awk '{print $4}')
if [[ $free -gt 0 ]]; then
break;
fi
sleep 5;
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句