Linux bash 脚本 - 命令分组

Linux bash 脚本 - 命令分组

我是 bash 脚本编写的新手,我对命令的聚合有疑问。正是在这行代码中:

timeout -s 9 1 echo $var | nc localhost port

我正在尝试通过 netcat 将变量 var 的数据发送到特定端口中的本地主机,并且我想将该命令超时 1 秒。阅读超时的手册页,我明白它应该用作:

timeout -s SIGNAL TIME COMMAND

我的问题是如何用管道命令 echo $var | 替换 COMMAND nc localhost 端口并进一步了解如何正确编写以下情况:

COMMAND1 | (COMMAND2 | COMMAND3)

(COMMAND1 | COMMAND2) | COMMAND3

如果我是正确的,第二个例子相当于

COMMAND1 | COMMAND2 | COMMAND3

但我不知道第一个怎么写。

答案1

该 COMMAND 将由timeout而不是来解释。您不能放置子 shell(和bash内的管道命令)。()

您可以将命令放入 shell 脚本中,然后将其名称传递给timeout.

或者实际上强制 COMMAND 由bash.这应该有效:

timeout -s 9 1 bash -c "echo $var | nc localhost port"

相关内容