Um function
é local para um shell, então você precisaria de find -exec
para gerar um shell e ter essa função definida nesse shell antes de poder usá-lo. Algo como:
find ... -exec ksh -c '
function foo {
echo blan: "$@"
}
foo "$@"' ksh {} +
bash
permite exportar funções através do ambiente com export -f
, assim você pode fazer (no bash):
foo() { ...; }
export -f foo
find ... -exec bash -c 'foo "$@"' bash {} +
ksh88
tem typeset -fx
para exportar a função (não pelo ambiente), mas isso só pode ser usado pelo she-bang menos scripts executados por ksh
, portanto não com ksh -c
.
Outra opção é fazer:
find ... -exec ksh -c "
$(typeset -f foo)"'
foo "$@"' ksh {} +
Ou seja, use typeset -f
para despejar a definição da função foo
dentro do script embutido. Note que se foo
usar outras funções, você também precisará descarregá-las.