我试图编写一个简单的shell脚本来检测clementine是否正在运行。如果是的话,它会关闭节电功能。我在终端中尝试了pacmd命令,它工作得很好,但在脚本中却没有。在第一个错误“pacmd no command found”之后,我输入完整路径,然后它说“./noSleep.sh:line 5:[/usr/bin/pacmd:no such file or directory”。所以我不明白它为什么找不到它。有什么帮助吗?
我不想在克莱门汀不放音乐的时候关掉省电。所以我不想用ps x | grep Clementine。

#!/bin/bash

while true
do
        if [/usr/bin/pacmd list-sink-inputs | grep Clementine]
    then
            xset -dpms; xset s off
    else
            xset +dpms; xset s on
    fi

    sleep 2m
done

脚本更新:
#!/bin/bash

while true
do
    if [ `echo pacmd list-sink-inputs | grep "Clementine" | wc -l` ]
    then
            xset -dpms; xset s off
            echo off
    else
            xset +dpms; xset s on
            echo on
    fi

    sleep 30s
done

因为某种原因它每次都会返回真值。我在测试pacmd语句时测试了Clementine不玩不玩。琴弦克莱门汀在演奏时显示,不演奏时不显示,所以我不确定为什么它不起作用。

最佳答案

在cyrus的注释中提到的if语句中,始终在[之后和]之前使用空格,而且您也不会测试if语句中的任何内容
grep -c "Clementine"命令检查在命令输出中发生"Clementine"的次数,因此如果它大于/usr/bin/pacmd list-sink-inputs则可能是打开的。

while true
do
    if [ "$(/usr/bin/pacmd list-sink-inputs|grep -c "Clementine")" -gt  0  ]
    then
            xset -dpms; xset s off
    else
            xset +dpms; xset s on
    fi

    sleep 2m
done

09-26 05:16