쉘 스크립트 내부에서 로깅이 작동하는지 확인하는 데 사용되는 IF 문이 제대로 응답하지 않습니다.

쉘 스크립트 내부에서 로깅이 작동하는지 확인하는 데 사용되는 IF 문이 제대로 응답하지 않습니다.

나는 arecord 명령줄 레코더가 작동하지 않는지 확인하고 그렇다면 시작해야 하는 스크립트를 작성했습니다. cron의 도움으로 특정 시간 범위 내에 녹화하는지 확인하고 싶습니다. 이는 때때로 경고 없이 레코드가 중지되기 때문입니다.

다음은 cron(셸 실행 파일)을 사용하여 실행하는 스크립트입니다.

#!/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

나는 그것을 테스트했고 원하는대로 작동합니다.

관련 정보