2011-06-29 101 views
1

我想写一个bash脚本来创建/检查基于日期的文件的存在。基本上我想有一个todo_lists的目录里面有今天待办事项列表的文件。所以每次我打开终端时(MAC OS 10.6.8),它会检查,看看是否6-29-11.txt或任何基于bash根据日期创建文件?

date "+%m%d%Y" 

如果它存在的它,如果它只是less内容不会创建一个。

所以我想知道如何使用该日期格式的字符串作为文件名以及如何检查字符串变量,即

[ -e date_string.txt ] && ... 

我将如何完成这些事情,我很新来砸

回答

5

尝试此:

DATE=`date "+%m%d%Y"` 
if [ -f "todo_lists/$DATE.txt" ]; then 
    do stuff 
fi 

的反引号(')指,运行这个命令并返回输出作为字符串

+0

非常感谢我所需要的 –

+0

和否定? – pufos

+0

@pufos - 我假设你的意思是,检查文件是否存在?如果是,则语法为'if [! -f“todo_lists/$ DATE.txt”];然后' – Geoffrey

2

为此,您的Mac已经插入了子弹。

总之:你可以让任何文件(默认值是$ HOME /日历),你可以在表单中输入类似一行提醒到它:

06/29<TAB>reminder for today 
06/30<TAB>reminder for tomorrow 
07/15<TAB>another one 

和你的$HOME/.profile简单输入calendar命令。

以上后,每次打开一个新的终端窗口时,calendar命令会征询了今天提醒日历文件,发现一个提醒时,会打印出它...

您可以加入更多不同的日历(与namedays例如)和其他...
检查man calendar


,并回答了你的QST是:

file="./todo/$(date "+%F").txt" 
[ -f "$file" ] && { 
     echo "My today reminders" 
     cat "$file" 
} 

我建议使用格式“+%F”(2011-06-29),因为你得到的文件排序列表,当你做ls左右...

PS:使用$(command ....)形式,而不是`命令“(反引号),因为你可以轻松地将它们嵌入$(command $(another $(nexT)))中。反引号在当前bash中已弃用。

+0

也正是我所需要的,只是他先来了 –