如何让循环仅在语句为真时停止

时间:2015-03-18 02:18:33

标签: linux bash loops

我希望运行一个bash脚本,只有在语句为真时才会停止。

我的bash脚本代码如下。我正在比较日期,如果比较日期为假,脚本不应该停止,继续运行直到达到正确的时间。

我遇到问题,我希望脚本是这样的"当前时间是03180932015,如果时间到达031809402015,它将回显到一个文件,然后停止。" 但现在不是。如果该语句为false,则将结束该脚本。

time=`date '+%m%d%H%M%Y'`
if [ $time == "031809402015" ]; then
  #echo "hellodd:" > ./aaa.txt
  ipmitool -I lanplus -H 192.168.2.2 -U USERID -P PASSW0RD sel list > xxx.txt
fi
done

2 个答案:

答案 0 :(得分:2)

试试这个:

until [[ "$(date '+%m%d%H%M%Y')"  == "031809402015" ]]; do
  sleep 1
done
ipmitool ...

答案 1 :(得分:1)

试试这个:

while循环非常适合在某些条件为真时需要执行一组命令的情况。有时您需要执行一组命令,直到条件为真。

until command 
do 
Statement(s) to be executed until command is true 
 done

此处评估Shell命令。如果结果值为false,则执行给定语句。如果命令为istrue,则不会执行任何语句,程序将在完成语句后跳转到下一行。