在shell脚本中使用acpi_listen命令
我在UBuntu 16.04。 我在这里问了一个关于耳机插头拔出事件的问题。 我尝试过的东西不起作用。 我想使用acpi_listen命令来监听耳机连接事件并使用notify-send显示消息。 如何在shell脚本中使用acpi_listen?
编写这样的脚本非常简单 – 你需要管道acpi_listen
到while IFS= read -r line ; do ... done
while IFS= read -r line ; do ... done
结构,并负责处理该结构中的事件。 read
shell builtin命令将等待来自acpi_listen
的一行文本,并且当if
语句看到该行包含适当的文本时将进行处理。 或者,可以使用case
语句来提高脚本的可移植性。
这是我个人会使用的简单脚本。 在Ubuntu 16.04 LTS上测试
#!/bin/bash acpi_listen | while IFS= read -r line; do if [ "$line" = "jack/headphone HEADPHONE plug" ] then notify-send "headphones connected" sleep 1.5 && killall notify-osd elif [ "$line" = "jack/headphone HEADPHONE unplug" ] then notify-send "headphones disconnected" sleep 1.5 && killall notify-osd fi done
请注意,如果您计划从cron作业或通过/etc/rc.local
运行此/etc/rc.local
,则需要导出DBUS_SESSION_BUS_ADDRESS
以使notify-send
工作。