如果命令 "cat /dev/net/tun" 结果 $string 那么

if command "cat /dev/net/tun" result $string then

我正在创建一个脚本来检查 VPS 是否启用了 TUN 驱动程序。 检查命令是:

cat /dev/net/tun

如果 return:

cat: /dev/net/tun: File descriptor in bad state

模块已启用。否则 return 错误。

这是我的脚本:

tunstring="File descriptor in bad state"
if cat /dev/net/tun | grep -q "$tunstring"; then
    echo "GOOOOOD"
else
    echo "ERROR"
fi

我收到 ERROR 消息。

我用文本文件尝试了相同的脚本,它成功了...

由于输出是写在 stderr 上的,您可以使用:

tunstring="File descriptor in bad state"
if cat /dev/net/tun |& grep -q "$tunstring"; then
    echo "GOOOOOD"
else
    echo "ERROR"
fi

|& 将上一个命令的标准输出和标准错误通过管道传输到管道中的下一个。

看起来你的 VPS 路径,即 /dev/net/tun 不再有效,cat 命令无法读取它。