【问题标题】:How to let loop only stop when statement is true如何让循环仅在语句为真时停止
【发布时间】:2015-03-18 02:18:32
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你试过直到循环吗??
  • 您希望脚本在那之前做某事,还是在那之前什么都不做
  • 另外看看at命令,它在指定的时间运行指定的命令或脚本。
  • Beta:在那之前我什么都不想做

标签: linux bash loops


【解决方案1】:

试试这个:

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

【讨论】:

  • 我去试试,希望时间到了,执行ipmi下面的命令..... 比如当前时间是031809402015,如果时间到了031809452015,那么执行命令,是有什么方法。
  • 非常感谢。
  • 谁能帮助我,我无法发布问题。请我请
【解决方案2】:

试试这个:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多