屏蔽devtcphostport重定向错误。

下面的脚本将测试8079到8081的tcp端口是打开还是关闭。

for port in {8079..8081}; do
  echo >/dev/tcp/127.0.0.1/$port &&
    echo "port $port is open" ||
    echo "port $port is closed"
done

测试结果

user@linux:~$ ./script.sh 
./script.sh: connect: Connection refused
./script.sh: line 2: /dev/tcp/127.0.0.1/8079: Connection refused
port 8079 is closed
port 8080 is open
./script.sh: connect: Connection refused
./script.sh: line 2: /dev/tcp/127.0.0.1/8081: Connection refused
port 8081 is closed
user@linux:~$ 

如何删除以下几行?我试着将 stderr 重定向到 /dev/null 喜欢 2>/dev/null 但没有工作。

./script.sh: connect: Connection refused
./script.sh: line 2: /dev/tcp/127.0.0.1/8079: Connection refused

理想的输出

user@linux:~$ ./script.sh 
port 8079 is closed
port 8080 is open
port 8081 is closed
user@linux:~$ 

解决方案:

I’ve tried to redirect stderr to

其实是可以的。只是你需要把整个循环的stderr重定向一下而已*不仅仅是 echo的;因为它不是 echo 报告这些错误的。例如

for port in {8079..8081}; do
  if echo >/dev/tcp/127.0.0.1/$port; then
    echo "port $port is open"
  else
    echo "port $port is closed"
  fi
done 2>/dev/null

* 或者是if块,或者是什么超出范围的。echo. 标准和bash手册都没有明确说明为什么这样做,我想这只是常识。

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何检索两列之间最接近的数字匹配行

2022-11-2 2:34:26

未分类

AVL树的倒置索引算法,每次都重复键 c++

2022-11-2 2:45:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索