Test Foro de elhacker.net SMF 2.1

Sistemas Operativos => GNU/Linux => Mensaje iniciado por: Anonymous09 en 23 Enero 2019, 21:04 PM

Título: Script alta y buscar.sh casi solucionado
Publicado por: Anonymous09 en 23 Enero 2019, 21:04 PM
Buenas foro, necesito que le miren un pequeño fallo que no encuentro. En uno de los script que les voy a mostrar ahora, tengo un IF con una condición muy básica, pero no lo ejecuta. solo ejecuta la parte del ELSE. Se lo muestro:

salir ()

{

         exit 1

}
trap 2 3 15

if [ $# -ne 4 ]
then

      exit 2

else
     
     a=$(bash buscar.sh 1 $1 )

     if [ $a == $1 ]
     then
            exit 0
     else
           echo $1:$2:$3:$4 >> alumnos.txt
     fi
fi

---------------------------------------------------------------------------------------------

Pues bien, viendo esto lo que quiero hacer es que llame al script buscar.sh que lo único que va hacer dicho script es de todas las lineas buscar justo la que quiero y sacarla (eso en el script buscar.sh), pero en este que les e mostrado, quiero que ejecute el script buscar.sh y con lo que saque que lo compare con el primer parámetro introducido cuando ejecutamos el script alta.sh. Si dicha condicon se cumple quiero que salga sinos, quiero que los 4 parametros que introduzca cuando ejecute el comando alta.sh lo agregre al fichero alumnos.txt

MOD: No escribir título en mayúsculas.
Título: Re: Script alta y buscar.sh casi solucionado
Publicado por: Geovane en 23 Enero 2019, 21:11 PM
¡Hola

intente así

if [ "$#" -ne 4 ]

Saludos
Título: Re: Script alta y buscar.sh casi solucionado
Publicado por: EdePC en 24 Enero 2019, 04:33 AM
Código (bash) [Seleccionar]
EdSon@EdePC ~$ ls
alta.sh  alumnos.txt  buscar.sh

EdSon@EdePC ~$ cat alumnos.txt
11111111:juan:perez:14
22222222:luis:lopez:16

EdSon@EdePC ~$ cat alta.sh
if [ "$(buscar.sh 1 $1)" == "" ]; then
  echo "$1:$2:$3:$4" >> alumnos.txt
else
  echo "El DNI $1 ya existe"
fi

EdSon@EdePC ~$ cat buscar.sh
while IFS=: read -ra campos; do
  if [ ${campos[$1 - 1]} == $2 ]; then
    echo "${campos[0]}:${campos[1]}:${campos[2]}:${campos[3]}"
  fi
done < alumnos.txt

EdSon@EdePC ~$ buscar.sh 2 luis
22222222:luis:lopez:16

EdSon@EdePC ~$ alta.sh 11111111 pepe grillo 14
El DNI 11111111 ya existe

EdSon@EdePC ~$ alta.sh 33333333 pepe grillo 14

EdSon@EdePC ~$ cat alumnos.txt
11111111:juan:perez:14
22222222:luis:lopez:16
33333333:pepe:grillo:14

EdSon@EdePC ~$


Referencias:
https://openlibra.com/es/book/download/practicas-de-fundamentos-de-software
https://openlibra.com/es/book/download/bash-notes-for-professionals
https://openlibra.com/es/book/download/advanced-bash-scripting-guide-ed-2012