我正在处理继承的shell脚本,并且遇到了我以前从未见过的语法。
host = 192.[mask]
port = 2[mask]
( echo open ${host} ${port}
...about six other commands
echo exit ) | telnet
现在,这对垂直条有意义。只需在服务器上打开和运行命令的命令。
但是telnet
电话究竟在做什么?这种语法(parens和bar)是什么意思?我最好的猜测是暗示它打开telnet,然后从telnet中运行以下命令,但我想确定。
答案 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
。