shell脚本中的竖线?

4 bash shell telnet

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

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

( echo open ${host} ${port}
    ...about six other commands
  echo exit ) | telnet
Run Code Online (Sandbox Code Playgroud)

现在,这对垂直条有意义。只是在服务器上打开和运行命令的命令。

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

Gil*_*not 6

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

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

{
    telnet_input_line_1
    telnet_input_line_2
    telnet_input_line_3
    (...)
} | telnet 
Run Code Online (Sandbox Code Playgroud)

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


Ric*_*dle 5

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

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