0

我试图用 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

我尝试运行它,但没有看到所需的输出。

4

1 回答 1

0

-w在命令上指定了选项dmesg,这会导致程序等待新消息。所以循环中的第一条指令永远不会完成。

你可以试试这个:

#!/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
于 2022-02-04T19:03:45.217 回答