Eu acho que seu problema pode ser alguns problemas com a comparação de floats e strings.
AFAIK, teste não pode lidar com valores flutuantes, então seu teste para $value3 = 14.04
dará a você syntax error: invalid arithmetic operator (error token is ".04")
.
Você poderia apenas tratar os números como String assim:
elif [[ "$value3" == "14.04" ]]; then
Observe também as aspas em torno de $value3
, que também é necessário para tratar o 7.8
, que foi retornado no meu caso do debian 7.8, como string.
Se você quiser comparar apenas o número da versão principal, também poderá retirar a parte depois do ponto:
value3=$(lsb_release -sr | cut -d. -f1)
Isso dividirá a string retornada por lsb_release -sr
no .
que definimos como delimitador com o parâmetro -d.
e, em seguida, selecionará a primeira coluna do resultado com -f1
.
Isso também funciona com value4:
value4=$(cat /etc/debian_version | cut -d. -f1)
Isso corta a saída do meu /etc/debian_version
que foi 7.8
antes e 7
depois de adicionar o cut
.
Você também pode querer suprimir avisos de arquivos inexistentes. Eu não tenho um sistema de redhat disponível, então eu redirecionei as mensagens de erro dos dois primeiros comandos para /dev/null
desta forma:
value1=$(cat /etc/redhat-release 2> /dev/null | awk '{ print $4 }' | cut -c 1 )
Deixe-me saber se você precisar de alguma outra ajuda. Além disso, adicione algumas saídas e talvez até as saídas esperadas do seu script para que possamos ver onde está o seu problema.