Os paso tres pruebecitas curiosas:

Si 'Prueba1' funciona:

        # Prueba1
        prukk() {
        echo hhhhhhhhhhhh | cat
        cat <<FIN
        aaa
        bbb
        FIN
        }
        export -f prukk
        echo 'prukk' |  sh

Y 'Prueba2'  también funciona:

        # Prueba2
        prukk() {
                cat <<FIN  | cat
        aaa
        bbb
        FIN
        }
        prukk

¿ Porque 'Prueba3' no solo no funciona sino que provoca un error
de sintaxis en la función exportada ?

        # Prueba3
        prukk() {
                cat <<FIN  | cat
        aaa
        bbb
        FIN
        }
        export -f prukk
        echo 'prukk' |  sh

   :-O  :-O  :-O

sh: prukk: line 5: syntax error near unexpected token `|'
sh: prukk: line 5: ` | cat'
sh: error importing function definition for `prukk'
sh: prukk: command not found

   :-O  :-O  :-O

No le veo el sentido. Es como si bash tuviera implementada su
gramática en dos lugares distintos y fueran diferentes.


Me ha ocurrido esto mientras intentaba ejecutar una función con
sudo. Al no ser un comando se me ocurrió exportar la función y
ejecutarla desde una subshell con sudo. (echo 'prukk' | sudo sh)
pero me da un error que no tiene nada que ver con sudo. Quizás
exista otra forma de conseguir lo que quiero pero lo que ahora
me tiene comida la moral es porque una función importada da un
error de sintaxis que no existía en la función exportada siendo
logicamente idénticas.




-- 
Un saludo
Antonio Castro

       /\     /\   Ciberdroide Informática
         \\W//  << http://www.ciberdroide.com >>
        _|0 0|_
+-oOOO-(___o___)-OOOo---------------------+
| . . . . U U . Antonio Castro Snurmacher |
| . . . . . . . [EMAIL PROTECTED]   |
+()()()---------()()()--------------------+

Responder a