在shell脚本中使用acpi_listen命令

我在UBuntu 16.04。 我在这里问了一个关于耳机插头拔出事件的问题。 我尝试过的东西不起作用。 我想使用acpi_listen命令来监听耳机连接事件并使用notify-send显示消息。 如何在shell脚本中使用acpi_listen?

编写这样的脚本非常简单 – 你需要管道acpi_listenwhile 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工作。