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是数字,您需要使用它==来比较字符串。但是您说要判断时间是否在两次之间,而不是完全等于一次。在这种情况下,您应该使用<运算符:

if [ '08:03' \< "$dt" -a "$dt" \< '14:03']

或者更方便:

if [[ '08:03' < "$dt" && "$dt" < '14:03']]

请注意,这些运算符未在 POSIX 中指定,但适用于大多数 shell(Bash、Korn Shell、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 回答