我正试图用bash脚本和dmesg来解决问题。我想写一个脚本,它做以下事情:
当鼠标插入并运行脚本时,它将打印"鼠标存在"。当鼠标拔出并运行脚本后,它将显示"鼠标不存在"。
这是我想出的bash脚本(这是我的第一个bash脚本,所以请放轻松:p(
#!/bin/bash
touch search_file.txt
FILENAME=search_file.txt
while true
do
dmesg -w > search_file.txt # read for changes in the kernel ring buffer and write to a file
if grep -Fxqi "mouse|disconnect" "$FILENAME" # look for the keywords
then
echo "Mouse is disconnected"
else
echo "Mouse is connected"
fi
done
我试着运行这个,但没有看到想要的输出。
您在dmesg
命令上指定了-w
选项,这将导致程序等待新消息。因此,循环中的第一条指令永远不会完成。
你可以试试这个:
#!/bin/bash
touch search_file.txt
FILENAME=search_file.txt
while true
do
dmesg > "$FILENAME" # read for changes in the kernel ring buffer and write to a file
if grep -Fxqi "mouse|disconnect" "$FILENAME" # look for the keywords
then
echo "Mouse is disconnected"
else
echo "Mouse is connected"
fi
done