Test de redirection Double
-
30-09-2019 - |
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
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.