Definí una función de shell (llamémosla clock), que quiero usar como un contenedor para otro comando, similar a la timefunción, por ejemplo clock ls -R.
Mi función de shell realiza algunas tareas y luego termina con exec "$@".
Me gustaría que esta función funcione incluso con las funciones integradas de shell, por ejemplo, clock time ls -Rdebería generar el resultado de la función timeincorporada, y no el /usr/bin/timeejecutable. Pero execsiempre termina ejecutando el comando en su lugar.
¿Cómo puedo hacer que mi función Bash funcione como una envoltura que también acepta incorporaciones de shell como argumentos?
Editar : Acabo de enterarme que timeno es un Bash incorporado, sino una palabra reservada especial relacionada con las tuberías. Todavía estoy interesado en una solución para dispositivos integrados, incluso si no funciona time, pero una solución más general sería aún mejor.
exec bash -c \' "$@" \'. A menos que su comando en el primer parámetro se reconozca como un script de shell, se interpretará como un binario que se ejecutará directamente. Alternativamente, y de manera más simple, simplemente omitaexecy llame"@"desde su shell original.