管道是否由简单的命令组成?

Tim*_*Tim 0 shell bash pipe posix

来自 Bash 参考手册

管道是一系列由控制运算符或分隔的简单命令||&

从 POSIX 2013

管道是由控制操作符分隔的一个或多个命令的序列|

我知道 Bash 有许多对 POSIX shell 的扩展,例如|&.

但是是管道的组件命令

  • 简单的命令或
  • 只是任何命令(简单,再次管道,列表,复合和功能)?

在 Bash 中,以下工作

$ for f in $(ls *); do echo $f; done | cat
Run Code Online (Sandbox Code Playgroud)

但是管道的第一个组件命令并不简单,而是复杂的。

Kus*_*nda 7

Bash 4.4.5 的手册中没有包含管道组成描述中的“简单”一词。您所指的“简单命令”可能是打字错误或疏忽,或者可能是很久以前的遗留问题。

bash维护者于 2014 年 4 月修复,目前为:

管道是一个或多个命令的序列,由其中一个控制运算符|或分隔|&

一个管道显然可以由不是简单命令的命令组成(例如,子shell 和for循环,它们是复合命令)。