2014-02-23 58 views
0

我需要編寫bash腳本的幫助。我對腳本知識甚少,但願意學習。日期檢查器腳本

我有一個看起來像這樣的行的文件:1204200141345_song.mp3。這些數字是日期和時間像day=12, month=04, year=2014, hour=13, min=45

我需要一個腳本,將通過該文件通讀,如果一行匹配的當前日期和時間,它會通過mplayer/mpg123在正確的時間播放MP3。當mp3結束時,它必須繼續。文件始終在變化。新行進入,其他行被刪除。只要電腦開着,腳本就會運行。

我不知道從哪裏開始,任何建議表示讚賞。

+0

也許當你顯示至少很少的努力來解決這個問題 - 你可以得到更多的答案......歡迎來到SO - 並閱讀頂部的幫助...像︰_Questions要求代碼必須展示一個最小了解正在解決的問題。包括嘗試解決方案,爲什麼他們不工作,以及預期的結果... _ – jm666

+0

您的文件名是從年份20014 –

回答

2

所以,你願意學習 - 一些出發點...

該腳本將只要是PC上運行。

好吧,這可以用一個循環什麼將永遠運行,像下一個來實現:

while : 
do 
    some_commands 
done 

當MP3結束它必須繼續。

正如上面 - 如果some_commands包含的命令來播放文件 - 該腳本會等待命令完成,並開始了 - 又一次,又一次,又一次...永遠...

文件一直在變化。新行進入,其他行刪除 。

不需要在意,直到它是一個文件...

...如果某行匹配 當前日期和時間將在 起到通過的mplayer/mpg123的MP3的正確的時間。

因此,首先您需要獲取所需格式的日期。這可以通過date命令來實現。 (man date)

所需要的格式是%d%m%Y%H%M,所以

date +"%d%m%Y%H%M" 

將打印當前的日期/時間以期望格式

assing命令的結果,一些變量bash是可以做到的在

variable=$(command argumens) 

所以,

datestr=(date +"%d%m%Y%H%M") 
echo $datestr 

會將當前日期/時間分配給變量datestr

...通過文件讀取,如果一條線的當前日期和時間......

Read-thru and match可以用grep命令(man 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 

現在,你有足夠的信息來嘗試自己編寫劇本,如果你滿足一些特定的錯誤 - 再問... ;)