Bashスクリプトの実行中の構文エラー: 'if'が一致しません。

Bashスクリプトの実行中の構文エラー: 'if'が一致しません。

bashについてはよくわかりませんが、特定のタスクを実行するためにbashスクリプトを作成したいと思います。ここに直接尋ねることが私の問題をよく説明できず、ただ1時間続け続けて、少なくともコードが基本構造を持つように最善を尽くしました。 ) より多くの人が喜んで助けることができるように私の質問を受けてください.)

まず、どのようなエラーが発生するのかを見てみましょう。

$ su
$ sh "/sdcard/tester.sh"
/sdcard/tester.sh[2]: syntax error: 'if' unmatched

コードは以下のように表示されます。

#!/bin/bash
PACKAGE='com.mixplorer'
if [ $(pidof $PACKAGE) ]; then
am force-stop com.mixplorer
am start -n com.mixplorer/.activities.BrowseActivity

loopcleaner()
{
rm -rf /sdcard/log.txt
}

while [ $(pidof $PACKAGE) ]
do
loopcleaner
sleep 10

if [ ! $(pidof $PACKAGE) ]; then
break
mkdir /sdcard/successful.txt
fi
done

私が達成したいことの説明:

1) スクリプトが実行されると、まずパッケージ名が「com.mixplorer」のプロセスのファイルマネージャがすでに有効になっていることを確認し、その場合は強制停止して再度開きます。それ以外の場合は開いてください。

2)ファイルマネージャが開かれたので、ファイルマネージャプロセスの実行中にループから10秒ごとにLoopcleanerによって定義された「log.txt」というファイルを削除し続けます。

3)ファイルマネージャプロセスが有効になっていない場合にのみ、手順2のループクリーンアッププロセスを終了し、Success.txtというファイルを作成します。このファイルを生成した後、スクリプトは独自のプロセスを終了/終了する必要があります。

答え1

fiこのセクションの最後に以下を追加します。

if [ $(pidof $PACKAGE) ]; then
am force-stop com.mixplorer
am start -n com.mixplorer/.activities.BrowseActivity
fi

関連情報