Como combinar “4.4” de 'uname -r'?

2

Pseudocódigo

[ 'uname -r' =~ ^4\.4.*$ ] && echo "yes"  

que é, no entanto, mal sucedido em todos os casos. O comando uname -r fornece elementos como 4.6.0-040600-generic como uma saída.

    
por Léo Léopold Hertz 준영 13.06.2016 / 19:20

4 respostas

3

Operador bash [ pode não ser o que você está procurando; no entanto, [[ suporta =~ . Tente isto:

[[ $(uname -r) =~ ^4\.4 ]] && echo yes
    
por 13.06.2016 / 19:24
2

Dependendo do seu caso de uso (por exemplo, testar vários valores), você pode achar a sintaxe "case" mais adequada.

case $(uname -r) in
   4.4*) echo 4.4 based kernel found ;;
  3.10*) echo 3.10 based kernel found ;;
      *) echo unknown kernel found
esac
    
por 13.06.2016 / 19:29
1

use [[ :

ver=$(cut -d. -f1-2 <(uname -r))
[[ $ver =~ 3.2 ]] && echo "y"

OU use [ :

ver=$(cut -d. -f1-2 <(uname -r))
[ $ver == 3.2 ] && echo "y"
    
por 13.06.2016 / 19:25
1

Outra maneira:

case $(uname -r) in (4.4.*) echo yes;; esac
    
por 13.06.2016 / 19:28