用于检查记录是否在 shell 脚本内工作的 IF 语句没有很好地响应

用于检查记录是否在 shell 脚本内工作的 IF 语句没有很好地响应

我编写了一个脚本,该脚本应该检查 arecord 命令行录音机是否无法工作,如果是,则应该启动它。在 cron 的帮助下,我想验证我是否在特定的时间范围内进行记录。这是因为有时 arecord 会在没有任何警告的情况下停止。

这是我使用 cron 运行的脚本(一个 shell 可执行文件):

#!/bin/sh
dateis=$(date +"%Y-%m-%d-%H-%M")
if [pgrep -x "arecord" >/dev/null]
then 
    
else 
    arecord -v -f dat -r 48 -D hw:1,0 -d 200 -c 2 | lame -r -h - record-$dateis.mp3
fi

由于某种原因,即使 arecord 正在录制,它也会尝试启动 arecord 的另一个实例。在命令行上,pgrep 指示正确。但由于某种原因它不会停止并且会忽略 if 语句。即使它在同一时刻运行,它也会开始记录。

希望我把这个问题说清楚了。

答案1

你可能需要

#!/bin/sh
dateis=$(date +"%Y-%m-%d-%H-%M")
if pgrep -x "arecord" >/dev/null
then
    :
else
    arecord -v -f dat -r 48 -D hw:1,0 -d 200 -c 2 | lame -r -h - record-$dateis.mp3
fi

我已经测试过了,它达到了你想要的效果。

相关内容