4

我正在处理继承的 shell 脚本,并且遇到了我以前从未见过的语法。

host = 192.[mask]
port = 2[mask]

( echo open ${host} ${port}
    ...about six other commands
  echo exit ) | telnet

现在,这对竖线来说是有意义的。只是在服务器上打开和运行命令的命令。

但是这个telnet电话实际上在做什么?这个语法(parens 和 bar)是什么意思?我对此的最佳猜测意味着它会打开 telnet,然后从 telnet 中运行以下命令,但我想确定一下。

4

2 回答 2

6

括号用于将其中的所有命令的输出分组到一个 Unix管道 |中,该管道进入命令的输入telnet

但是括号创建了一个子shell,你不需要任何子shell,所以你可以这样做:

{
    telnet_input_line_1
    telnet_input_line_2
    telnet_input_line_3
    (...)
} | telnet 

您甚至可以替换telnetnetcat; 它更适合用于脚本目的。

于 2013-03-27T23:47:17.450 回答
4

|是一个“管道”,它有效地将“open ...”文本输入到telnet. wheretelnet通常会从键盘读取输入,而不是从前面的命令中读取。

括号将命令组合在一起,以便它们的所有输出都转到telnet.

于 2013-03-27T23:47:34.573 回答