Definir um pipeline como um ou mais comandos significa que um único comando também é um pipeline, embora não envolva um pipe. O benefício é que ! como um operador de negação não precisa ser definido separadamente para comandos e pipelines; só precisa ser definido como aplicado a um pipeline.
Em ! cmd1 | cmd2 , o ! nega o status de saída do pipeline inteiro, não apenas o único comando cmd1 . O status de saída de um pipeline, por padrão, é o status de saída do comando mais à direita.
Da mesma forma, uma lista é mais um conjunto de pipelines unidos por ; , & , && ou || . Assim, um único pipeline é também uma lista e um único comando é também uma lista. Então, quando um comando como if é definido como tendo uma lista entre as palavras-chave if e then , isso inclui automaticamente comandos únicos e pipelines simples como parte da definição de um comando.
-
Uma lista que consiste em dois pipelines (um dos quais consiste apenas em um comando):
if IFS= read -r response && echo "$response" | grep foo; then
-
Uma lista que consiste em um único pipeline:
if echo "$foo" | grep foo; then
-
Uma lista que consiste em um único pipeline (que contém apenas um único comando):
if true; then