2017-12-18 80 views
0

我想测试一个日期......如果它的那些时间2帧之间,我想打印出来...... 但我得到声明errors..This是我的脚本庆典如果随着时间的推移

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 

我曾尝试与-ge和-le给我:整数表达式预期 -gt和-lt:整数表达式预期 我也用“<”和“>”,给我:没有这样的文件或目录。

我需要做这项工作随着时间只有日期......不能使用INT

因为时间我会从数据库中提取出来并与数据库的及时更换today_time

+0

可能的重复https://stackoverflow.com/questions/8116503/how-to-compare-two-datetime-strings-and-return-difference-in-hours-bash-shell – tripleee

回答

2

你的输出不是数字,但像字符串:

[[email protected] ~]$ 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> $ today_less 每次和您的if [ $today_less_u -gt $today_time_u部分将是false每次,所以您将无法获得任何内容,但echo noelse声明中。

+0

谢谢你的帮助.. 。它的作品...没想到转换它们 – Omega

+1

享受。顺便说一句,在bash中,在'if/while'语句中使用'-a'而不是'&&'和'-o'来代替'||'。 –

+0

我只是用today_time作为例子...来测试是否应用到真实脚本之前...因为实际时间我会从数据库中获取并转换它 – Omega

相关问题