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.