循环时在shell脚本中的逻辑AND

时间:2013-06-10 14:36:52

标签: shell

我正在尝试比较shell脚本的while循环中的日期。 shell脚本将由2个条件控制,如下所示:

while [ $currentDate -le $currentDateMonthEnd -a $currentDate -le $toDate ]; do
...
done

以上是我目前的代码,它抱怨"integer expression expected"。我也尝试过使用&&AND,它们也不起作用并抱怨支架不匹配。

有人可以提供语法来进行上述比较吗?

2 个答案:

答案 0 :(得分:1)

dc ()
{
  [ $(date +%s -d "$1") $2 $(date +%s -d "$3") ]
}

while dc "$currentDate" -le "$currentDateMonthEnd" && dc "$currentDate" -le "$toDate"
do
  # ...
done

答案 1 :(得分:0)

以下代码适用于我,

#! /bin/bash

toDate=`echo 2014/03/30 | tr -d "/"`
currentDate=`date +"%Y/%m/%d" | tr -d "/"`
currentDateMonthEnd=`date +%Y/%m/%d -d "-$(date +%d) days +1 month" | tr -d "/"` 

while [[ $currentDate -le $currentDateMonthEnd ]] && [[ $currentDate -le $toDate ]]   
do   
...  
done


#! /bin/sh 

while [ $currentDate -le $currentDateMonthEnd ] && [ $currentDate -le $toDate ] 
do   
...  
done