2017-12-18 78 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

相關問題