Como Chris Down disse nos comentários, detectar a distribuição é realmente uma maneira ruim de detectar o sistema de pacotes. Por exemplo, você mencionou "REDHAT + CENTOS + FEDORA = suporte para rpm + yum e DEBIAN + UBUNTU = deb + apt-get". OK, e quanto a Mint, LMDE, Kali, Backtrack, Crashbang e todas as outras distros usando dpkg / apt-get ? Ou Scientific Linux, Yellow Dog Linux e Oracle Linux, todos usam yum ? Sem mencionar outras distribuições baseadas em RPM que não usam yum como SuSe, OpenSuSe, Mandriva Linux, Rosa Linux ou Mageia?
Uma maneira muito melhor seria detectar a ferramenta que você deseja usar. Também sugiro que você use o sistema rpm diretamente, em vez de yum , por que limitar-se às distribuições baseadas em 6 RPM que usam yum ?
Eu simplesmente testaria se o sistema em que você se encontra usa rpm ou dpkg para gerenciar seus pacotes:
if [ $(rpm -qa 2>/dev/null | wc -l ) -gt 10 ]; then
system="rpm"
elif [ $(dpkg -l 2>/dev/null | wc -l ) -gt 10 ]; then
system="dpkg"
else
system="unk"
fi
echo $system
Como rpm pode ser instalado em distribuições com base em dpkg e vice-versa , estou testando se há mais de 10 pacotes instalados com cada ferramenta.
Para obter uma maneira melhor de detectar a distribuição real, consulte a resposta aceita aqui , que deve lhe dar uma ideia de quão complicado é. Você realmente quer escrever testes específicos de distro para dúzias de distros quando você poderia facilmente detectar o sistema de empacotamento usado em seu lugar?