Você está executando sort
duas vezes (uma vez para verificar se o parâmetro é suportado e, em seguida, para executá-lo). Mas o que você esqueceu é que seu primeiro sort
também lê stdin
e, portanto, bloqueia até que sua entrada real atinja EOF (no ponto em que não há mais dados para ler para sua segunda sort
instance). / p>
Portanto, redirecione seu primeiro sort
stdin
(adicionei suporte a parâmetro (usando $@
), se você não quiser, basta removê-lo):
function sort_by_version {
if $(sort -u -V < /dev/null &>/dev/null); then
sort -u -V "$@"
else
sort -u "$@"
fi
}
Editar: suporte ao parâmetro adicionado (por exemplo, você pode usar sort_by_version -r
para reverter os resultados, etc.)