我正在尝试测试一个日期...如果它在这两个时间帧之间我想打印它们......但是我得到错误..这是我的脚本
today_time=$(date +%H:%M:%S --date '-1 sec')
today_dow=$(date +"%u")
today_less=$(date +%H:%M:%S --date '-1 min')
today_more=$(date +%H:%M:%S --date '+1 min')
echo $today_less
echo $today_time
echo $today_more
if [ $today_less -gt $today_time ] && [ $today_time -lt $today_more ]; then
echo "$today_less"
echo "$today_time"
echo "$today_more"
else
echo no
fi
我用-le尝试了-ge并给了我:整数表达式期望-gt和-lt:期望整数表达式我也使用'<'和'>'并给我:没有这样的文件或目录。
我需要仅使用时间日期来完成这项工作...而不是使用int
因为我将从db中提取它并将today_time替换为db的时间。
您的输出不是数字,而是字符串,如:
[sahaquiel@sahaquiel-PC ~]$ date +%H:%M:%S --date '-1 min'
13:40:30
将其转换为Unix时间并比较实数,例如:
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> $ today_less每次和你的if [ $today_less_u -gt $today_time_u
部分每次都是false
,所以你在echo no
声明中除了else
之外什么也得不到。