![OK no bash, não OK no sh - convert diff](https://rvso.com/image/1606676/OK%20no%20bash%2C%20n%C3%A3o%20OK%20no%20sh%20-%20convert%20diff%20.png)
No GNU Bash, diff <(df) <(ls)
está em execução.
Em sh
, não é.
Eu também tentei [[diff </bin/df <bin/ls]]
, ainda erro:
$ [[/usr/bin/diff < (/bin/ls) < (bin/df)]]
sh: 1: Syntax error: "(" unexpected
$ bash
alguém sabe o equivalente a sh
? Realmente aprecio a ajuda.
Responder1
Não há equivalente direto para <(…)
>(…)
substituições – você precisará criar pipes nomeados manualmente como substituição:
mkfifo /tmp/lspipe
mkfifo /tmp/dfpipe
/bin/ls > /tmp/lspipe &
/bin/df > /tmp/dfpipe &
/usr/bin/diff /tmp/lspipe /tmp/dfpipe
rm /tmp/lspipe /tmp/dfpipe
(Observe também que no Bash, hánãoespaço entre o <
e o (…)
.)
Isso [[…]]
não faz absolutamente nenhum sentido neste contexto. Eles não servem para agrupar comandos, mas para escrever expressões condicionais (não os confunda com ( )
ou { }
quais agrupam comandos). Também é um recurso específico do Bash, mas em locais onde é usado corretamente, pode ser substituído por [ … ]
ou por expr
.