У меня есть следующая команда:
pactl list sinks | perl -000ne 'if(/#1/){/(Volume:.*)/; print "$1\n"}'
это возвращает вывод как:
Volume: 0: 50% 1: 50%
это обозначает, что pulseaudio объем для приемника 1 составляет 50%.
Таким образом, я хочу регистрировать его если условие объем <= 50% или нет
Таким образом, как я могу сделать это?
Можно использовать следующую команду (расширенная версия предложения 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