我对如何使用 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/