Re: problema al programar scripts en bash.
On Tuesday, March 12, 2019 8:42:24 PM -03 Fran Torres wrote:
> 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.
Buenas
es que en el primer script solo esta la funcion...
nunca la llamas...
ejemplo agregale al primer script abajo de todo
ShowUser USER
USER = a un usuario de sistema o algo.
y te va andar.
si pones solo la funcion sin ningun usuario
te va a devolver el error:
'echo "error, se esperaba un argumento"'
no se si entendio pero creo que si..
en definitiva tenes que llamar la funcion cuando
la queres usar...
saludos.
Matias.-
Reply to: