Linux shell:为什么是;开放式;此telnet命令中需要

Linux shell:为什么是;开放式;此telnet命令中需要,linux,bash,telnet,Linux,Bash,Telnet,我试图在bash中处理telnet输出,我偶然发现了将telnet命令发送到服务器的这种语法 ( echo open $host $port sleep 1 echo $cmd1 sleep 1 ) | telnet 我想知道的是为什么需要“open”命令,为什么 ( echo $host $port ... ) | telnet 导致“无效命令”错误。…因为主机名不是有效的命令名?两者之间有很大的区别 $ telnet host port 及 后者是echo命令有效执行的功能 one l

我试图在bash中处理telnet输出,我偶然发现了将telnet命令发送到服务器的这种语法

( echo open $host $port
sleep 1
echo $cmd1
sleep 1
) | telnet
我想知道的是为什么需要“open”命令,为什么

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

导致“无效命令”错误。

…因为主机名不是有效的命令名?两者之间有很大的区别

$ telnet host port

后者是
echo
命令有效执行的功能

one liner会自动运行一个
open
命令,因此它基本上相当于:

$ telnet
telnet> open host port

但我完全不知道为什么不首先运行
telnet主机端口

。基本上,您可以使用主机和端口参数调用
telnet
,或者,如果您在没有参数的情况下调用它,则必须在
telnet>
提示符下使用
open
命令连接到主机。哦,根据您的解释,现在我可以理解了。我一定是把Linuxshell的“open”命令和telnet的命令弄混了。多谢各位@sanch3z,如果马克·里德给了你答案,你应该这样做。
$ telnet
telnet> open host port