シェルスクリプト内でロギングが機能していることを確認するために使用される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

私はそれをテストし、好きなように動作します。

関連情報