Question

Qu'est-ce que cette impression shell?

echo foo | while read line; do echo $line; done < <(echo bar)

J'attendre à évaluer à echo foo | bar ou foo < <(bar), toutes deux se traduirait par un message d'erreur.

Dans Bash 4.1.5 il semble que le tuyau est simplement mis au rebut:

bar

Dash:

sh: Syntax error: redirection unexpected
Était-ce utile?

La solution

Dash ne supporte pas la substitution de traitement (<()).

Le comportement que vous voyez est cohérente si vous utilisez la syntaxe qui est pris en charge par chacune des coquilles que vous comparez. Essayez ceci:

echo hello | cat < inputfile

Vous devriez voir le contenu de « inputfile » et non « bonjour ». Plusieurs obus I essayé, seul obus Z a montré à la fois.

Ce que dit en ce qui concerne les pipelines et Posix redirection:

  

La sortie standard de commande1 doit être connecté à l'entrée standard de commande2. L'entrée standard, la sortie standard, ou à la fois d'une commande doit être considéré comme étant affecté par la canalisation avant que la redirection spécifiée par les opérateurs de redirection qui font partie de la commande (voir Redirection).

J'interprète cela signifie que dans le cas de l'exemple ci-dessus, les cessionnaires de pipeline StdIn à cat alors les remplacements de redirection il.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top