这是我现在的脚本 –
#!/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命令。 ]
之前的空间。 grep
的人将会与许多对HH:MM:SS
的误报相匹配。 你可能想要改善你的匹配。 $(who|grep)
的成功,而不是测试空字符串输出。 在未来,更多的细节比“不行”更好;)
在BASH中,对NULL的测试是z
,例如, if [ -z "$NAME" ]; then ...
if [ -z "$NAME" ]; then ...
但是,您可以轻松地使用grep的退出状态:
root@tpost-desktop:/usr/src# who | grep :0 tpost tty7 2010-05-23 09:16 (:0) root@tpost-desktop:/usr/src# echo $? 0 root@tpost-desktop:/usr/src# who | grep :123 root@tpost-desktop:/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