我正在处理继承的 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 中运行以下命令,但我想确定一下。
括号用于将其中所有命令的输出分组到一个 Unix管道 |中,该管道通向telnet命令的输入。
但是括号创建了一个子shell,你不需要任何,所以你可以这样做:
{
telnet_input_line_1
telnet_input_line_2
telnet_input_line_3
(...)
} | telnet
Run Code Online (Sandbox Code Playgroud)
您甚至可以替换telnet为netcat; 它更适合用于脚本目的。
这|是一个“管道”,它有效地将“open ...”文本键入到telnet. telnet通常从键盘读取输入的位置,而是从前面的命令读取输入。
括号将命令组合在一起,以便它们的所有输出都发送到telnet.