Verificar condição no shell script

1

Eu tenho o seguinte comando:

pactl list sinks | perl -000ne 'if(/#1/){/(Volume:.*)/; print "\n"}'

retorna a saída como:

Volume: 0:  50% 1:  50%

denota que o volume pulseaudio do sink 1 é de 50%.

Então eu quero verificar se a condição o volume & lt; = 50% ou não

Então, como posso fazer isso?

    
por Prakash V Holkar 28.04.2014 / 11:35

1 resposta

1

Você pode usar o seguinte comando (versão aprimorada da proposta de terdon):

pactl list sinks | perl -000ne 'if(/#1/){/Volume:.*\s+(\d+)%.*\s+(\d+)%/; exit(1) if (>50 or >50)}'

Ele verificará se os canais Left e Right estão acima de 50% e sairá com o valor 1 (0 em vez disso)

Você pode verificar o código de saída com echo $? :

$ pactl list sinks | perl -000ne 'if(/#1/){/Volume:.*\s+(\d+)%.*\s+(\d+)%/; exit(1) if (<=50 or <=50)}'
$ echo $?
0

UPDATE :

Para incluir o seguinte comando em um script de shell, basta usar o seguinte snippet:

#!/bin/bash

pactl list sinks | perl -000ne 'if(/#1/){/Volume:.*\s+(\d+)%.*\s+(\d+)%/; exit(1) if (>50 and >50)}'
if [ $? -ne 0 ]; then
    echo "Volume > 50%"
else
    echo "Volume <= 50%"
fi
    
por Sylvain Pineau 28.04.2014 / 11:55