shell脚本中的垂直条?

时间:2013-03-27 23:44:28

标签: bash shell telnet

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

括号用于将其中包含的所有命令的输出分组到一个Unix pipe |,后者转到telnet命令的输入。

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

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

您甚至可以telnet替换netcat;它更适合脚本编写。

答案 1 :(得分:4)

|是" pipe",它有效地键入" open ..."将文字转换为telnet。其中telnet通常从键盘读取输入,而不是从前面的命令读取它。

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