检查 shell 脚本中的条件

检查 shell 脚本中的条件

我有以下命令:

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)}'

它将检查LeftRight通道是否均高于 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

相关内容