我试图编写一个简单的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