bash - 如何从/dev/tcp 捕获 Bash 中的错误?

标签 bash tcp error-handling

我对如何使用 trap 有一定的了解,但我终生无法弄清楚如何捕获从/dev/tcp 返回的错误。

当运行“cat

如果有人对如何在这种情况下使用 trap 有任何见解,那将非常有帮助。我目前的处理方式是这样的:

if [ $? != 0 ]; then
    echo "error"
fi

这让我能够在发生错误时执行操作,但这是我知道如何处理这个特定问题的唯一方法。这不是正确的方法,我知道,但这是我唯一可以开始工作的方法。

如果有人知道如何在 Bash 中解决这个问题,那就太好了。不,我不能改用 netcat。

最佳答案

错误直接来自 Bash 而不是来自 cat。因此重定向运算符是无用的。

我仍在寻找消除连接错误消息的方法。

仍然可以评估错误条件:

exec 3<>/dev/tcp/${2}/${3} || {
    echo "PROBLEM"
    exit 1
}

上述测试的修改版本可以是:

#!/bin/bash

# args: #1: host, #2: port

(exec 3<>/dev/tcp/${1}/${2}) &>/dev/null
if [ $? -ne 0 ] ; then
    echo "PROBLEM"
    exit 1
fi

显然这个版本没有为调用者打开 fd 3 而是打算丢弃错误消息。

关于bash - 如何从/dev/tcp 捕获 Bash 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9524372/

相关文章:

bash - 查找最近 30 分钟内未访问/修改的文件?

bash - 在 bash 中等待作业,一次允许有限的并行作业,然后等待所有作业完成以继续管道的其余部分

linux - wget 中的 HTTP 请求占用了大部分时间

tcp - 当 TCP 连接数超过 65000 时服务器发送 RST 给客户端~

android - Flutter android 在 Release模式下灰屏,即使在 Debug模式下没有错误或红屏

bash - 询问时如何在 bash 脚本中自动按 Enter?

android - 一段时间后 Android 服务中未接收到 TCP 套接字

python - 如何让服务器监听 TCP 和 UDP?

php - 异常和错误的区别?

angular - Angular中的错误处理