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.

