Проверьте условие в сценарий оболочки

У меня есть следующая команда:

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

это возвращает вывод как:

Volume: 0:  50% 1:  50%

это обозначает, что pulseaudio объем для приемника 1 составляет 50%.

Таким образом, я хочу регистрировать его если условие объем <= 50% или нет

Таким образом, как я могу сделать это?

1
задан 28 April 2014 в 13:35

1 ответ

Можно использовать следующую команду (расширенная версия предложения terdon):

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

Это проверит, что и Left и Right каналы выше 50% и выйдут со значением 1 (0 вместо этого)

, можно проверить код выхода с echo $?:

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

ОБНОВЛЕНИЕ :

Для включения следующей команды в сценарий оболочки просто используйте следующий отрывок:

#!/bin/bash

pactl list sinks | perl -000ne 'if(/#1/){/Volume:.*\s+(\d+)%.*\s+(\d+)%/; exit(1) if ($1>50 and $2>50)}'
if [ $? -ne 0 ]; then
    echo "Volume > 50%"
else
    echo "Volume <= 50%"
fi
1
ответ дан 11 November 2019 в 12:47

Другие вопросы по тегам:

Похожие вопросы: