来自 Bash 参考手册
管道是一系列简单命令由控制运算符之一
|
或分隔|&
。
来自 POSIX 2013
管道是一个或多个的序列命令由控制操作员分开
|
。
我知道 Bash 有许多 POSIX shell 的扩展,例如|&
.
但是是管道的组件命令
- 简单的命令或
- 只是任何命令(简单、再次管道、列表、复合和函数)?
在 Bash 中,可以执行以下操作
$ for f in $(ls *); do echo $f; done | cat
但管道的第一个组件命令并不简单,而是复合的。
答案1
Bash 4.4.5 的手册在描述管道的组成部分时不包含“简单”一词。您所指的“简单命令”可能是拼写错误或疏忽,或者可能是很久以前的遗留问题。
它是bash
2014年4月由维护者修复,当前内容为:
管道是由一个控制运算符
|
或分隔的一个或多个命令的序列|&
。
管道显然可以由简单命令或非简单命令组成(例如子 shell 和for
循环,它们是复合命令)。
答案2
Bash 手册 ( man bash
) 从未在管道的描述中包含简单一词。获取任意bash-${version}.tar.gz
文件来自这个网站,解压后查看该文件,bash-${version}/doc/bash.1
该文件是bash各版本的使用手册。
包含这个词的simple
就是bashref
文件。从与上面相同的下载和扩展文件中,读取,其中包含了上述 bashref 手册的 4.3 版之前的bash-${version}/doc/bashref.pdf
单词simple
at point 。3.2.2 Pipelines
3.2.2 管道 管道是由“|”或“|&”分隔的一系列简单命令。
bashref 包含这样的词并不意味着复杂的命令(与“简单”相对)以任何方式被排除在管道(包括管道{…}
if…then…
while…do…
和其他管道)中。
这种措辞是一个简单的拼写错误,不应该用来得出任何结论。