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