用于日期操作的Shell脚本

时间:2011-05-20 13:50:30

标签: linux shell date-manipulation

如果日期在剧本中的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中运行。请提出建议

2 个答案:

答案 0 :(得分: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这样的最小shell(这是Ubuntu上的/bin/sh),请注意使用它们。

答案 1 :(得分:2)

-eq运算符用于比较整数,而不是字符串。如果您想比较字符串,则需要使用==。试试这个:

if [ $dt == '08:03' ]
then
# Rest of script