Foro de elhacker.net

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
  1. EdSon@EdePC ~$ ls
  2. alta.sh  alumnos.txt  buscar.sh
  3.  
  4. EdSon@EdePC ~$ cat alumnos.txt
  5. 11111111:juan:perez:14
  6. 22222222:luis:lopez:16
  7.  
  8. EdSon@EdePC ~$ cat alta.sh
  9. if [ "$(buscar.sh 1 $1)" == "" ]; then
  10.  echo "$1:$2:$3:$4" >> alumnos.txt
  11. else
  12.  echo "El DNI $1 ya existe"
  13. fi
  14.  
  15. EdSon@EdePC ~$ cat buscar.sh
  16. while IFS=: read -ra campos; do
  17.  if [ ${campos[$1 - 1]} == $2 ]; then
  18.    echo "${campos[0]}:${campos[1]}:${campos[2]}:${campos[3]}"
  19.  fi
  20. done < alumnos.txt
  21.  
  22. EdSon@EdePC ~$ buscar.sh 2 luis
  23. 22222222:luis:lopez:16
  24.  
  25. EdSon@EdePC ~$ alta.sh 11111111 pepe grillo 14
  26. El DNI 11111111 ya existe
  27.  
  28. EdSon@EdePC ~$ alta.sh 33333333 pepe grillo 14
  29.  
  30. EdSon@EdePC ~$ cat alumnos.txt
  31. 11111111:juan:perez:14
  32. 22222222:luis:lopez:16
  33. 33333333:pepe:grillo:14
  34.  
  35. 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