Checar se o dialog está instalado

Iniciado por rafasnn, 02 de Setembro de 2007, 21:53

tópico anterior - próximo tópico

rafasnn

Galera,

precisa de um script com a seguinte função:

se o dialog não está instalado
    apt-get install dialog -y
fim

é possivel ?
Macbook Pro 2,33 4GB 250GB
iPhone 8GB

luiz_zwisch

Olá,

Você pode adicionar o seguinte código em seu script:


estado=`aptitude show dialog | grep 'Estado' |cut -c 9-`

if [ $estado = "não instalado" ]
then
      apt-get install dialog -y
fi


Espero que ajude.

Abraço!

rafasnn

Luiz,

da o seguinte erro



rafael@laptop:~$ ./teste.sh
./teste.sh: line 3: [: muitos argumentos



#!/bin/bash
estado=`aptitude show dialog | grep 'Estado' |cut -c 9-`
if [ $estado = "não instalado" ]; then
      apt-get install dialog -y
fi
Macbook Pro 2,33 4GB 250GB
iPhone 8GB

luiz_zwisch

O problema estava em verificar a variável contendo mais de uma palavra. O script a seguir está funcionando e é até mais simples. Caso o aptitude esteja em inglês, use o aptitude show dialog e veja como é a frase em inglês para o estado do pacote.


#!/bin/sh

aptitude show dialog | grep 'Estado: não instalado'

if [ $? -eq 0 ]
then
      apt-get install dialog -y
fi


Abraço

rafasnn

Macbook Pro 2,33 4GB 250GB
iPhone 8GB

rafasnn

luiz,

complicando ainda mais, teria como adaptar essa condição para:


if   (tem o dialog) ?
then
     faça isso
else
     faça aquilo
fi
Macbook Pro 2,33 4GB 250GB
iPhone 8GB

luiz_zwisch

Claro, dá sim!!


#!/bin/bash

aptitude show dialog | grep 'Estado: instalado'

if [ $? -eq 0 ]  #Se $? retornar 0 é porque comando anterior retornou algum resultado e o pacote dialog está instalado
then
      comando1
      comando2
          ...
      comandoN
else
      comando1
      comando2
          ...
      comandoN
fi



Experimente esse exemplo.

rafasnn

#7
Luiz,

deu certo sim... mas ajustando o script preciso checar se o dialog não está instalado assim:


if [ $? -eq 0 ]
then
apt-get install dialog -y
fi

while do
       comandos...
done


Macbook Pro 2,33 4GB 250GB
iPhone 8GB