bash如果声明随着时间的推移

时间:2017-12-18 10:41:23

标签: bash

我正在尝试测试一个日期...如果它在这两个时间帧之间我要打印它们...... 但我得到错误。这是我的剧本

  <InstallExecuteSequence>
     <Custom Action='RemoveAlelionFolder' After="InstallInitialize">
         Installed AND NOT UPGRADINGPRODUCTCODE
     </Custom>
      <RemoveExistingProducts After="InstallValidate"/>
  </InstallExecuteSequence>

我尝试使用-le并给我:期望整数表达式  -gt和-lt:期望的整数表达式 我还使用了&#39; &lt; &#39;和&#39; &gt; &#39;并告诉我:没有这样的文件或目录。

我需要仅使用时间日期来完成此工作...而不是使用int

因为我将从数据库中提取它并将 today_time 替换为db的时间。

1 个答案:

答案 0 :(得分:2)

您的输出不是数字,而是字符串,如:

[sahaquiel@sahaquiel-PC ~]$ date +%H:%M:%S --date '-1 min'
13:40:30

将其转换为Unixtime并比较清晰的数字,例如:

today_time=$(date +%H:%M:%S --date '-1 sec')
today_time_u=$(date +%s --date '-1 sec')

today_dow=$(date +"%u")  

today_less=$(date +%H:%M:%S --date '-1 min')
today_less_u=$(date +%s --date '-1 min')

today_more=$(date +%H:%M:%S --date '+1 min')
today_more_u=$(date +%s --date '+1 min')

echo $today_less
echo $today_time
echo $today_more

if [ $today_less_u -gt $today_time_u -a $today_time_u -lt $today_more_u ]; then
        echo "$today_less"
        echo "$today_time"
        echo "$today_more"
else
        echo no
fi

再一次,在你的例子中,$today_less是当前日期 - 1分钟; $today_time是当前日期 - 1秒;那么,$ today_time&gt; $ today_less 每次,您的if [ $today_less_u -gt $today_time_u部分每次都会false,因此除了echo no声明中的else之外,您将无法获得任何内容。