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