ghoostuser
(usa Arch Linux)
Enviado em 25/11/2015 - 21:43h
conectadohost escreveu:
Olá,
testei no meu CentOS eu acrescentei o else e o echo para verificar se não estava concluindo todo o script
echo "Distribuição suportada!"
else
echo " Não encontramos sua distribuição "
fi
done
ele faz a leitura normal com o cat /etc/*-release
acredito eu que como o nome da distribuição tenha espaço tipo o meu CentOS release 6.7 (Final)
o script do modo que foi programado está fazendo a leitura somente do inicio como esta na variável
VET_DISTRO=("CentOS Linux" "Arch Linux" "Fedora" "Debian GNU/Linux")
ou seja ele lê somente CentOS e acusa como não encontrado
acho que esse script teria que mudar a forma de testar as variaveis
salvei 2 prints de como ele rodou aqui
http://prntscr.com/96z6wr
http://prntscr.com/96z75b
Tambem fiz da seguinte forma coloquei o nome correto da minha distribuição dentro da variavel
VET_DISTRO=("CentOS release 6.7 (Final)")
ele exibiu 4 mensagens
Não encontramos sua distribuição
Não encontramos sua distribuição
Não encontramos sua distribuição
Não encontramos sua distribuição
ai você vai me perguntar mas por que ele exibiu 4 mensagens sendo que você colocou somente um nome da distribuição
por que o script entende que quando você coloca o nome com espaço dessa forma CentOS release 6.7 (Final)
ele entende que são 4 nomes para pesquisar.
gabrielscorpion escreveu:
Galera, tenho esse script abaixo:
#!/bin/bash
DISTRO=$(cat /etc/*-release | grep ^NAME | cut -d'=' -f2 | cut -d'"' -f2)
VET_DISTRO=("CentOS Linux" "Arch Linux" "Fedora" "Debian GNU/Linux")
for i in ${VET_DISTRO[*]}
do
if [[ "$i" == "$DISTRO" ]];then
echo "Distribuição suportada!"
fi
done
...o que eu quero é fazer uma comparação com as strings do vetor que são nome das distribuições, com o nome da distro atual retirado
da variavel DISTRO.
Só que esse script num da retornando certo a mensagem "Distribuição suportada".
Alguem pode me ajudar?
Grato :)
---> A arte de programar consiste na arte de organizar e dominar a complexidade.
---> Dijkstra <---
1)
Bom, acho que não tem nada a ver o espaço.
É uma comparação de strings, como se fosse igual esse de baixo, que da certo:
DISTRO="CentOS Linux"
if [[ "$DISTRO" == "CentOS Linux" ]]; then
echo "igual"
else
echo "não é igual"
fi
Porem ai em cima, a variavel DISTRO esta recebendo um valor fixo, ja com este comando:
DISTRO_NAME=$(cat /etc/*-release | grep ^NAME | cut -d'=' -f2 | cut -d'"' -f2)
Vai me retornar o nome da distro retirado da variavel NAME do arquivo "/etc/*-release". Porem o valor irá ser igual a esse mesmo, o dê "CentOS Linux". Bom, pelo menos no meu CentOS o comando da variavel DISTRO_NAME retorno isso.
2) Eu não sei por qual motivo o seu comando "cat /etc/*-release" retornou apenas uma unica linha
no seu CentOS. Quando testei no meu esse unico comando com o cat, sem os "cut" e "grep", me
retorna informações contendo o PRETTY, NAME, ID..etc. Tipo assim:
cat /etc/*-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support/"
BUG_REPORT_URL="https://bugs.debian.org/"