Eu defini uma função shell (vamos chamá-lo clock
), que eu quero usar como invólucro para outro comando, semelhante à time
função, por exemplo clock ls -R
.
Minha função shell executa algumas tarefas e termina com exec "$@"
.
Eu gostaria que essa função funcionasse mesmo com os shell embutidos, por exemplo, clock time ls -R
deve gerar o resultado do time
embutido, e não do /usr/bin/time
executável. Mas exec
sempre acaba executando o comando.
Como posso fazer com que minha função Bash funcione como um invólucro que também aceite argumentos internos do shell?
Edit : Acabei de saber que time
não é um Bash embutido, mas uma palavra reservada especial relacionada a pipelines. Ainda estou interessado em uma solução para embutidos, mesmo que não funcione time
, mas uma solução mais geral seria ainda melhor.
exec bash -c \' "$@" \'
. A menos que seu comando no primeiro parâmetro seja reconhecido como um script de shell, ele será interpretado como um binário para ser executado diretamente. Alternativamente, e de forma mais simples, apenas perca aexec
chamada e"@"
do seu shell original.