Script, comprobar si esta instalado un programa

Imagen de MarioH
0 puntos

Hola, estoy experimentando script en linux, y soy un completo novato. 

estoy tratando de hacer un script que pueda detectar si un programa esta instalado, de no estar instalado, que lo instale. (Uso ubuntu 7.04)

 

lo que llevo hasta el momento es:

 

## PROGRAMA="miprograma"
## RESPUESTA=$(dpkg --get-selections | grep $PROGRAMA)

 

RESPUESTA=$(dpkg --get-selections | grep miprograma)
  if [ "$RESPUESTA" = "miprograma install" ]; then
      echo "YA ESTA INSTALADO"
  else
      echo "NO ESTA INSTALADO"
      sudo aptitude -y install miprograma
  fi

 

 

No se me ocurre que comparaciones hacer dentro del if para cumplir la condicion, y e intentado con un "echo?" haber si devolvia 0 u otro valor, y no me funciono (o no supe como)

 Agradesco desde ya cualquier ayuda, guia o reto que me puedan dar. 

 

MarioH 

 

Imagen de joseluis
+1
0
-1

Haz la pregunta al revés ya que entre el nombre del paquete y la palabra install hay varios tabuladores.
Utiliza también la opción -w en el grep para buscar exactamente el paquete con el nombre que te interesa (por ejemplo si buscas mipaquete pero tienes instalado mipaquetedistinto, si no pones -w en el grep te encontrará mipaquetedistinto y te lo dará como instalado).
También añade que busque install (igualmente con la opción -w para que no se confunda con deinstall) para asegurarte que realmente está instalado:

  echo "Introduce el nombre del paquete"
  read miprograma
  RESPUESTA=$(dpkg --get-selections | grep -w ${miprograma} | grep -w install)
  if [ "$RESPUESTA" = "" ]; then
      echo "NO ESTA INSTALADO"
      sudo aptitude -y install ${miprograma}
  else
      echo "${miprograma} YA ESTA INSTALADO"
  fi

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de MarioH
+1
0
-1

Muy agradecido por tu respuesta. =D

+1
0
-1
Imagen de joantriay2
+1
0
-1

Discula, pero soy novato en la programaión, yo estoy interesado en hacer un script que directamente compruebe si "x11vnc" està instalado, por lo que no quiero que me pida que introduzca el nombre del programa, lo he estado intentando y no hay manera, si me pudieses ayudar te lo agradeceria.

Gracias.

+1
0
-1
Imagen de sk8darr
+1
0
-1

Pues tomando el codigo que nos proporcionó nuestro amigo..simplemente seria quitar la petición de la variable y ponerlo directo...Primero el codigo original:

echo "Introduce el nombre del paquete"
  read miprograma
  RESPUESTA=$(dpkg --get-selections | grep -w ${miprograma} | grep -w install)
  if [ "$RESPUESTA" = "" ]; then
      echo "NO ESTA INSTALADO"
      sudo aptitude -y install ${miprograma}
  else
      echo "${miprograma} YA ESTA INSTALADO"
  fi

El otro seria:


  RESPUESTA=$(dpkg --get-selections | grep -w x11vnc | grep -w install)
  if [ "$RESPUESTA" = "" ]; then
      echo "NO ESTA INSTALADO"
      sudo aptitude -y install x11vnc
  else
      echo "x11vnc YA ESTA INSTALADO"
  fi
+1
0
-1