這是劇本我目前有─BASH-運行MPlayer如果任一有上顯示沒有用戶:0或如果有多個參數
#!/bin/bash
if["$#" == "2" OR who | grep ":0" == ""]
export DISPLAY=:0
xset dpms force on
mplayer -fs $1.mp4
fi
它不工作。
感謝您的幫助。
這是劇本我目前有─BASH-運行MPlayer如果任一有上顯示沒有用戶:0或如果有多個參數
#!/bin/bash
if["$#" == "2" OR who | grep ":0" == ""]
export DISPLAY=:0
xset dpms force on
mplayer -fs $1.mp4
fi
它不工作。
感謝您的幫助。
你應該花一些時間閱讀man test
,它看起來像你對我已經有了幾個問題在這裏:在[
後
if [ "$#" = "2" -o -z "$(who | grep ':0')" ]; then
-o
是OR運算符。-z
用於測試空字符串。$(...)
執行who命令。]
之前的空格。who
會打印出時間,而grep
會與很多針對HH:MM:SS
的誤報相匹配。你可能想要改善你的匹配。$(who|grep)
的成功,而不是測試空字符串輸出。在未來,不是 「它不工作」,更詳細地優選的;)
在bash,測試爲NULL是 - z
,e.g if [ -z "$NAME" ]; then ...
。然而,你可以很容易地使用退出狀態可以從grep來代替:
[email protected]:/usr/src# who | grep :0
tpost tty7 2010-05-23 09:16 (:0)
[email protected]:/usr/src# echo $?
0
[email protected]:/usr/src# who | grep :123
[email protected]:/usr/src# echo $?
1
如果grep的沒找到你問什麼,它將與非零狀態退出。所以,你可以這樣做:
who | grep :0 >/dev/null 2>&1
if [ $? = 0 ]; then
USING_DISPLAY=1
else
USING_DISPLAY=0
fi
然後測試的USING_DISPLAY
值,播放影片,如果其0
需要有在if
後的空間,[
後和之前的「]」 。
#!/bin/bash
if [ "$#" == "2" ] || ! who | grep '(.*:0.*)$' > /dev/null 2>&1
then
export DISPLAY=:0
xset dpms force on
mplayer -fs $1.mp4
fi
Rob,你能更清楚地知道什麼不起作用嗎? – Anero 2010-05-23 16:05:21
即使有人正在播放電影,劇本也只播放電影:0 .... – rob 2010-05-23 16:14:14
問題可能與--- grep「:0」==「」--- part – rob 2010-05-23 16:15:00