我有以下命令:
pactl list sinks | perl -000ne 'if(/#1/){/(Volume:.*)/; print "$1\n"}'
它返回的输出为:
Volume: 0: 50% 1: 50%
它表示接收器 1 的脉冲音频音量为 50%。
所以我想检查一下音量是否小于 50%
那么我该怎么做呢?
答案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
更新:
要在 shell 脚本中包含以下命令,只需使用以下代码片段:
#!/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