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のシェルによって実行されるため、2つのシェル、つまりコマンドを入力するローカルシェルとAndroidの呼び出しシェルが関連付けられますadb shell。したがって、特殊文字が2つのシェルを通過する必要がある場合は、2回引用する必要があります。

このようにコマンドを書くのは誤解を招くかもしれません。

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"'

関連情報