2017-01-16 68 views
-4

即時嘗試使鬧鐘像 https://milkteafuzz.com/j/2012/02/22/a-simple-bash-alarm-clock/ 但我得到權限被拒絕的錯誤。 我必須在usr/bin中運行一個文件嗎?我想,也還沒有工作 我的代碼是:你是權限被拒絕,儘管文件是完全允許

#!/bin/bash 
printf "What time are you setting this alarm for? " 
read date 
echo Okay! Will ring you on $(date --date="$date"). 
sleep $(($(date --date="$date" +%s) - $(date +%s))); 
echo Wake up! 
while true; do 
/home/-------/Music/mapleleaf.mp3 
    sleep 1 
done 
+0

'/ home/yehuda/Music/mapleleaf.mp3'有什麼權限? – melpomene

+4

您正在嘗試執行MP3文件,就像它是一個程序一樣;不是這樣。您需要一個將文件作爲輸入來播放的程序。 (您正在複製的腳本使用'/ usr/bin/mpg123'。) – chepner

+1

請澄清:(1)文件中#!'之前是否有空格? (2)您是否在運行腳本時立即獲得「權限被拒絕」,或者僅在「喚醒!」後才能獲得「權限被拒絕」。打印? (3)請發佈'ls -l thethofcript'的_complete,unedited_輸出。 – zwol

回答

2

腳本複製使用/usr/bin/mpg123播放MP3文件。

/usr/bin/mpg123 ~/alarm.mp3 
^^^^^^^^^^^^^^^ 
    program 
       ^^^^^^^^^^^ 
       file to play 

您只指定要播放的文件,這不是有效的命令。您需要指定要使用哪個程序來播放文件(可能需要您先安裝這樣的程序)。

+0

感謝這是正確的答案 –

3

您需要指定一個程序,它將讀取腳本文件名前面的mp3文件。任何能夠在您的系統上播放mp3文件的程序都應該有效。

權限錯誤來自數據文件(如您的mp3文件)沒有(不應該)有「執行」位設置的事實,因爲它們不是程序,也不能由操作系統「運行」。即使是root用戶也會遇到同樣的問題,因爲它不是一個訪問權限問題,但操作系統(正確)拒絕運行未標記爲可執行文件的文件。

激活mp3可執行位(將使用chmod實用程序完成),然後嘗試運行它將不起作用,因爲內容顯然對OS執行無效。

+0

它不會_crash_。操作系統仍然會認識到它不是有效的可執行文件。你會得到一個不同的,仍然神祕,但更多的on-point錯誤信息,像'bash:foo.mp3:不能執行二進制文件'或'foo.mp3:Exec格式錯誤'。 – zwol

+0

是的,我意識到我必須播放像「vlc」程序的MP3文件,謝謝 –