0

スクリプトで日付が 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 で実行されます。何か提案してください

4

2 に答える 2

3

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/shUbuntu にあるもの) のような最小限のシェルを使用している場合は、それらの使用に注意してください。

于 2011-05-20T14:35:27.773 に答える
2

-eq演算子は、文字列ではなく整数を比較するためのものです。文字列を比較したい場合は、 を使用する必要があります==。これを試して:

if [ $dt == '08:03' ]
then
# Rest of script
于 2011-05-20T13:58:59.803 に答える