Linux shell: 为什么在这个 telnet 命令中需要 "open"

Linux shell: why is "open" required in this telnet command

我试图在 bash 中处理 telnet 输出,我偶然发现了这个语法来向服务器发送 telnet 命令

( echo open $host $port
sleep 1
echo $cmd1
sleep 1
) | telnet

我想知道的是为什么需要 "open" 命令以及为什么

( echo $host $port
...
) | telnet

导致“?无效命令”错误。

...因为主机名不是有效的命令名?差距很大

$ telnet host port

$ telnet
telnet> host port

后者是您的 echo 命令有效执行的操作。

one-liner 自动 运行 是一个 open 命令,所以它基本上等同于:

$ telnet
telnet> open host port

但我完全不确定您为什么不首先 运行 telnet host port