Puede ser que a uno le pusiste return 0 y al otro exit 0.
Si. Le pones a los dos return 0



El 12 de marzo de 2019 4:42:24 p. m. GMT-03:00, Fran Torres 
<[email protected]> escribió:
>Buenas chicos,
>
>¿algún administrador de sistemas linux/programador de scripts en
>bash-shell por la sala?.
>
>  Precisamente eso es lo que estudio como bien ya sabreis y, en clase
>de sistemas operativos estamos haciendo programación básica de scripts
>en shell. Mäs concretamente, estamos haciendo funciones. Os voy a
>poner un código de ejemplo y debajo de él, un código alternativo. Al
>final del segundo va la duda.
>
>#!/bin/bash
>function ShowUser(){
>if [ $# -ne 1 ]; then
>echo "error, se esperaba un argumento"
>return 1
>fi
>login=$1
>cmd=$(grep "^$login:" /etc/passwd)
>echologin=$(echo $cmd /etc/passwd | cut -d: -f1)
>uid=$(echo $cmd /etc/passwd | cut -d: -f3)
>gid=$(echo $cmd /etc/passwd | cut -d: -f4)
>dir=$(echo $cmd /etc/passwd | cut -d: -f6)
>shll=$(echo $cmd /etc/passwd | cut -d: -f7)
>if [ -z $cmd ]; then
>echo "no se ha encontrado el usuario introducido"
>else
>echo "la información del usuario $echologin, es:\n uid: $uid \n gid:
>$gid\n Directorio home: $dir|n shell de sistema: $shll\n"
>return 0
>fi
>}
>
>Ahora, el siguiente código:
>
>#!/bin/bash
>if [ $# -ne 1 ]; then
>echo "error, se esperaba un argumento"
>exit 1
>fi
>login=$1
>cmd=$(grep "^$login:" /etc/passwd)
>echologin=$(echo $cmd /etc/passwd | cut -d: -f1)
>uid=$(echo $cmd /etc/passwd | cut -d: -f3)
>gid=$(echo $cmd /etc/passwd | cut -d: -f4)
>dir=$(echo $cmd /etc/passwd | cut -d: -f6)
>shll=$(echo $cmd /etc/passwd | cut -d: -f7)
>if [ -z $cmd ]; then
>echo "error, no se ha encontrado el usuario especificado"
>exit 2
>else
>echo "la información del usuario $echologin, es:\n uid: $uid \n gid:
>$gid\n Directorio home: $dir|n shell de sistema: $shll\n"
>exit 0
>fi
>
>Como podeis observar, ambos scripts son idénticos, salvo por que uno
>lleva una función llamada showUSer, y sustituye los "exit" por
>"return".
>ambos scripts tienen el mismo comportamiento (código de status 0 por
>lo que la ejecución es correcta)
>Pero, ahora viene la salvedad del asunto.
>El primer script, pese a terminar su ejecución con código de error 0,
>no muestra absolutamente nada por stdout sobre la información que se
>le pide (los echos).
>Sin embargo, el segundo script si que lo muestra.
>
>Alguien sabría decirme por qué, o donde estoy fallando yo?
>
>Fran.

-- 
Enviado desde mi dispositivo Android con K-9 Mail. Por favor, disculpa mi 
brevedad.

Responder a