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

관련 정보