Bash 日期检查器脚本

Bash 日期检查器脚本,bash,Bash,我需要关于编写bash脚本的帮助。我对脚本编写知之甚少,但我愿意学习 我有一个文件,其中的行如下:1204200141345_song.mp3。数字是日期和时间,如日期=12,月份=04,年份=2014,小时=13,分钟=45 我需要一个脚本,它将读取整个文件,如果一行匹配当前日期和时间,它将在正确的时间通过mplayer/mpg123播放mp3。当mp3结束时,它必须继续播放。文件一直在更改。新线路进入,其他线路被拆除。只要电脑打开,脚本就会运行 我不知道从哪里开始,任何建议都很感激。所以,你

我需要关于编写bash脚本的帮助。我对脚本编写知之甚少,但我愿意学习

我有一个文件,其中的行如下:
1204200141345_song.mp3
。数字是日期和时间,如日期=12,月份=04,年份=2014,小时=13,分钟=45

我需要一个脚本,它将读取整个文件,如果一行匹配当前日期和时间,它将在正确的时间通过mplayer/mpg123播放mp3。当mp3结束时,它必须继续播放。文件一直在更改。新线路进入,其他线路被拆除。只要电脑打开,脚本就会运行


我不知道从哪里开始,任何建议都很感激。

所以,你愿意学习-一些起点

只要电脑打开,脚本就会运行

好的,这可以通过一个将永远运行的循环来实现,比如下一个循环:

while :
do
    some_commands
done
当mp3结束时,它必须继续播放

如上所述-如果
某些_命令
包含播放文件的命令-脚本将等待命令完成,并将重新开始-一次又一次,一次又一次。。。永远

文件一直在更改。新的生产线投入使用,其他生产线也投入使用 删除

不需要关心,直到它成为一个文件

。。。如果一行匹配 通过mplayer/mpg123在播放mp3的当前日期和时间 正确的时间

因此,首先需要以所需的格式获取日期。这可以通过
date
命令实现

所需格式为
%d%m%Y%H%m
,因此

date +"%d%m%Y%H%M"
将以所需格式打印当前日期/时间

将命令的结果分配给
bash
中的某个变量可以使用

variable=$(command argumens)
所以

将当前日期/时间分配为变量
datestr

。。。通读文件,如果一行与当前日期和时间匹配

Read-thru和match
可以使用
grep
命令()完成,因此,您需要使用

grep "what_want_to_match" filename_where_want_to_match.txt
grep退出时带有一个状态代码

  • 0-找到匹配项
  • 1-未找到匹配项
  • 2-该文件不存在
上一个命令的存在状态存储在特殊变量
$?
中。您可以测试退出状态,例如使用bash的
case
构造,如:

some_command
case $? in
    2) echo "The some_command exited with status 2" ; exit 2 ;;
    1) echo "with status 1" ; do_something_else ;;
    0) echo "normal exit" ;;
esac

现在,您已经有了足够的信息,可以尝试自己编写脚本,如果遇到某些特定错误,请再次询问……;)

也许当你表现出最小的努力来解决问题时,你可以得到更多的答案。。。欢迎来到SO-并阅读顶部的帮助。。。比如:询问代码的问题必须证明对正在解决的问题的最低理解。包括尝试的解决方案,为什么它们不起作用,以及预期的结果…您的文件名是从2004年开始的
some_command
case $? in
    2) echo "The some_command exited with status 2" ; exit 2 ;;
    1) echo "with status 1" ; do_something_else ;;
    0) echo "normal exit" ;;
esac