我创建了这个不工作脚本,
#!/bin/bash
echo "Mic Check"
timeout 2 pacat -r ./testmic -d 2
FILENAME=./testmic
FILESIZE=$(stat -c%s "$FILENAME")
killall pacat
if (( $FILESIZE <= 100 )); then
echo "Mic Muted..."
else
echo "Mic not Muted..."
fi
我的耳机有一个静音按钮,但没有led来指示这一点=[我试图使用一个脚本来提醒我,当麦克风是开放的
我不知道这是不是最好的办法,但是...这个脚本创建了一个“testMic”文件,当我按下静音按钮时,文件被创建,里面什么都没有:
但当我不按静音,该文件是用音频代码创建:
我不太明白发生了什么,但$FILESIZE总是返回相同的值。有什么办法能让这更有效吗
tks guys
Edit 1:这段代码中的问题是,如果testMic文件是空的,或者里面有音频代码,$FILESIZE的值总是相同的。
Edit 2:我不想通过在系统中静音麦克风来解决问题,我想使用耳机本身的静音系统
Edit 3:我用这段代码解决了这个问题:
#!/bin/bash
echo "Mic Check"
timeout 2 pacat -r ./testmic -d 2
FILECONTENT=$(grep -L -z -e . testmic)
killall pacat
if [[ "$FILECONTENT" == "testmic" ]]; then
echo "Mic Muted."
else
echo "Mic not Muted."
fi
1条答案
按热度按时间qf9go6mv1#
该文件可能只有在您杀死
pacat
之后才会写入磁盘。如果这是一个正确的诊断,最小的修复是将
stat
移动到killall
之后;但总的来说,更好的解决方案是只杀死正确的进程和avoid upper case for your private variables。您的脚本可能应该设置一个退出代码来反映结果,但我不清楚哪种情况应该算作成功。通常,
exit 0
表示成功,其他任何数字表示失败,但如果您没有任何其他信息要以机器可读的形式提供,则通常使用1
。(此外,在这种情况下,可能会提供一个选项来抑制诊断输出。)一个合适的工具也会避免在当前目录中丢弃随机文件;也许看看
mktemp
并设置一个trap
来清理临时文件,以防出现错误。