[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Error misterioso en shell-script



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 |
| . . . . . . . acastro@ciberdroide.com   |
+()()()---------()()()--------------------+



Reply to: