OS avalia no script bash

3

eu estava pensando de maneira que antes de executar meu script, avalie qual sistema operacional que usuário usar Ubuntu ou Solaris, estou usando isso porque há algumas diferenças na opção de comando em cada sistema operacional, como sed .. , eu estava tentando o seguinte:

sysEval='grep "ubuntu" | uname -a'

if [ sysEval ]; then

.......some command 

else ....... some command
fi

OBSERVAÇÃO Que meu script será executado apenas no Ubuntu ou Solaris
parece não funcionar!

    
por moata_u 11.03.2011 / 09:28

4 respostas

3

Em vez de analisar uname -a , uma ideia melhor seria analisar a saída de cat /etc/*release* .

    
por Vadim Rutkovsky 11.03.2011 / 09:44
4

Eu provavelmente faria algo assim:

os=$(uname -s)
case $os in
  Linux) 
    distro=$(lsb_release -si)
    case $distro in
      Ubuntu) 
        echo "Ubuntu, great!"
        ;;
      *) 
        echo "Sorry, Linux distribution '$distro' is not supported"
        exit 1
        ;;
    esac
    ;;
  SunOS) 
    echo "SunOS, great!"
    ;;
  *) 
    echo "Sorry, OS '$os' is not supported"
    exit 1
    ;;
esac
    
por geirha 11.03.2011 / 13:57
3

Existe uma variável de ambiente:

echo $OSTYPE
    
por Takkat 11.03.2011 / 10:19
0
 sysEval=cat /etc/*release* | awk 'FNR == 1 {print  }' | cut -d\= -f2
    
por moata_u 11.03.2011 / 10:30