Últimamente he tenido algunos problemas extraños con bash. Mientras intentaba simplificar mi script, se me ocurrió este pequeño fragmento de código:
$ o(){ echo | while read -r; do return 0; done; echo $?;}; o
0
$ o(){ echo | while read -r; do return 1; done; echo $?;}; o
1
return
debería haber salido de la función sin imprimir $?
, ¿no? Bueno, luego verifiqué si puedo regresar solo de una tubería:
$ echo | while read -r; do return 1; done
bash: return: can only `return' from a function or sourced script
Lo mismo sucede sin un while
bucle:
$ foo(){ : | return 1; echo "This should not be printed.";}
$ foo
This should not be printed.
¿Hay algo que me falta aquí? ¡Una búsqueda en Google no trajo nada sobre esto! Mi versión bash es la versión 4.2.37 (1) en Debian Wheezy.
while
no es necesario para la reproducción? Se distrae del punto.
while
bucle es un uso muy común para una tubería con return
. El segundo ejemplo es más directo al punto, pero es algo que no creo que nadie pueda usar ...