用于日期操作的 Shell 脚本
如果脚本中的日期介于 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 中运行一次。请建议一些东西
I want to do something if the date is in between 08:03 an 14:03 in a script.
but when I try
dt=`date +%H:%M`
if [ $dt -eq 08:03 ]
then
echo $dt > msize.txt
#echo "iam im 1 if"
fi
it doesn't work. This file is run in crontab in every minute. Please suggest something
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如 Rafe 在另一个答案中指出的那样,
-eq
是数字,您需要使用==
来比较字符串。但你说你想判断时间是否在两个时间之间,而不是完全等于一。在这种情况下,您应该使用<
运算符:或者更方便:
请注意,这些运算符未在 POSIX 中指定,但适用于大多数 shell(Bash、Korn Shell、zsh)。如果您使用的是像 Dash 这样的最小 shell(Ubuntu 上的
/bin/sh
就是这样),请小心使用它们。As Rafe points out in the other answer,
-eq
is numeric, you need to use==
to compare strings. But you said that you want to tell if the time is between two times, not exactly equal to one. In that case you should use the<
operator:Or more conveniently:
Note that these operators are not specified in POSIX, but work on most shells (Bash, Korn Shell, zsh). Just beware of using them if you're using a minimal shell like Dash (which is what
/bin/sh
is on Ubuntu).-eq
运算符用于比较整数,而不是字符串。如果要比较字符串,则需要使用==
。试试这个:The
-eq
operator is for comparing integers, not strings. If you want to compare strings, you'll need to use==
. Try this: