Existem várias maneiras de fazer o que você deseja. Este apenas remove o ponto decimal e tudo depois do número da versão:
VERSION=$(sed 's/\..*//' /etc/debian_version)
\..* significa um período ( \. ) seguido por zero ou mais de qualquer caractere ( .* ). Assim, para sed , a expressão s/\..*// significa substituir o período e tudo o que se segue com nada. O resultado do comando sed é salvo na variável de ambiente VERSION .
O acima elimina a necessidade das declarações if / then / elif /.../ fi. Ele funcionará com o bash e o ordinário / bin / sh.
MORE: sed é um editor de fluxo: isso significa que ele lê linhas de stdin, edita-as conforme as instruções e (normalmente) as envia para stdout. Neste caso, estamos dando uma instrução "substituta". Por exemplo, s/foo/bar/ significa localizar a primeira ocorrência de foo e substituí-la por bar. Como um caso especial, s/foo// significa substituir foo por nada. No nosso caso, queremos substituir um período seguido por qualquer caractere com nada. Agora, um período é "." exceto que sed normalmente trata um período para significar "qualquer caractere". Então, precisamos "escapar" colocando uma barra invertida à frente. Quando sed vê \. , sabe que nos referimos a um período literal. Também queremos apagar todos os caracteres após o período. Para representar "qualquer personagem", usamos um período . (sem escape). Para ser geral, no entanto, queremos excluir todos os caracteres após o período, independentemente de quantos existem. Então, enquanto na linguagem sed , um período significa qualquer caractere, a estrela significa "qualquer número do caractere precedente" (que pode ser zero). Assim, a estrela do período .* significa zero ou mais de qualquer caractere. Então, colocando tudo junto, s/\..*// diz a sed que, se encontrar um período, possivelmente seguido por qualquer coisa, substitua-o por nada.