スクリプトで日付が 08:03 から 14:03 の間にある場合は、何かしたいと思います。
しかし、私がしようとすると
dt=`date +%H:%M`
if [ $dt -eq 08:03 ]
then
echo $dt > msize.txt
#echo "iam im 1 if"
fi
うまくいきません。このファイルは毎分 crontab で実行されます。何か提案してください
スクリプトで日付が 08:03 から 14:03 の間にある場合は、何かしたいと思います。
しかし、私がしようとすると
dt=`date +%H:%M`
if [ $dt -eq 08:03 ]
then
echo $dt > msize.txt
#echo "iam im 1 if"
fi
うまくいきません。このファイルは毎分 crontab で実行されます。何か提案してください
Rafe が他の回答で指摘しているように、数値です。文字列を比較する-eq
ために使用する必要があります。==
しかし、時間が正確に 1 に等しいのではなく、2 時間の間にあるかどうかを知りたいとおっしゃいました。その場合、次の<
演算子を使用する必要があります。
if [ '08:03' \< "$dt" -a "$dt" \< '14:03']
またはより便利に:
if [[ '08:03' < "$dt" && "$dt" < '14:03']]
これらの演算子は POSIX では指定されていませんが、ほとんどのシェル (Bash、Korn シェル、zsh) で機能することに注意してください。Dash (これは/bin/sh
Ubuntu にあるもの) のような最小限のシェルを使用している場合は、それらの使用に注意してください。
-eq
演算子は、文字列ではなく整数を比較するためのものです。文字列を比較したい場合は、 を使用する必要があります==
。これを試して:
if [ $dt == '08:03' ]
then
# Rest of script