adb 쉘 명령을 실행하는 중 오류가 발생했습니다.

adb 쉘 명령을 실행하는 중 오류가 발생했습니다.
adb shell am broadcast -a com.test.app --es command "STOP" --es filename "sample 1.01.49 7-09-1380(01).apk"

위 명령을 사용하여 인텐트를 브로드캐스트 하려고 합니다 adb. 여기서 샘플은 1.01.49 7-09-1380(01).apk브로드캐스트하려는 파일이지만 다음 오류가 발생합니다.

/system/bin/sh: syntax error: '(' unexpected

누구든지 이 문제를 해결하도록 도와줄 수 있나요?

답변1

명령은 Android의 셸에 의해 실행되므로 두 개의 셸, 즉 명령을 입력하는 로컬 셸과 Android의 호출 셸이 관련됩니다 adb shell. 따라서 특수 문자가 두 개의 쉘을 거쳐야 하는 경우 두 번 인용해야 합니다.

이와 같이 명령을 작성하는 것이 오해의 소지가 적습니다.

adb shell 'am broadcast -a com.test.app --es command STOP --es filename sample 1.01.49 7-09-1380(01).apk'

그 결과 Android에서 다음 셸 명령이 실행됩니다.

am broadcast -a com.test.app --es command STOP --es filename sample 1.01.49 7-09-1380(01).apk

하지만 실제로는 다음과 같은 작업을 수행하고 싶습니다.

am broadcast -a com.test.app --es command STOP --es filename "sample 1.01.49 7-09-1380(01).apk"

따라서 다음과 같은 로컬 명령이 필요합니다.

adb shell 'am broadcast -a com.test.app --es command STOP --es filename "sample 1.01.49 7-09-1380(01).apk"'

관련 정보