2017-12-18 10 views
0

if文はbashの私は ...日付をテストするために...それは私がそれらを印刷したいものを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 
私のスクリプトです

私は-leと-geしようと、私を与えている:整数式が -gtと-ltを期待:整数式は私も「>」「<」を使用して を期待して、私を付与するものではありません:そのようなファイルやディレクトリを。

私は私がDBから抽出し、DBからの時間でtoday_timeを交換する時間はありません原因int型

で...唯一の時間日付で、この作業をする必要があります。

+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になるので、elseの文ではecho no以外は取得できません。

+0

ありがとうございました。 。仕事は...彼らを変換することを考えなかった – Omega

+1

お楽しみください。 btwのbtwは 'if&while'文で' || 'の代わりに' && 'と' -o'の代わりに '-a'を使います。 –

+0

私は実際のスクリプトにそれを適用する前にifをテストするためにtoday_timeを代用します...実際の時間を私がDBから取得してそれを – Omega

関連する問題