Wie ich in meinem Kommentar schrieb, gibt es einige Sonderzeichen, die besondere Sorgfalt erfordern, wenn Sie an der Shell-Eingabeaufforderung (oder in Shellskripten) arbeiten. Eines davon ist das $
Vorzeichen, das normalerweise eine Variable anzeigt. Wenn dies wörtlich genommen werden soll, müssen Sie es maskieren (oder die gesamte Zeichenfolge in einfache Anführungszeichen setzen). Ähnliche Regeln für Anführungszeichen.
Wie Ihr Befehl sollte wie folgt aussehen mit einem entkommen $
, können Sie bereits in finden eldarerathis' Antwort :
shell@android:/ # am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity
Beachten Sie den "Back-Slash" vor dem $
- das ist das Fluchtzeichen. Verwenden Sie dasselbe für Anführungszeichen oder Leerzeichen, wenn Ihr Befehl einige enthält, die wörtlich genommen werden sollen, z
myscript.sh first\ parameter\!
myscript.sh "first parameter!"
Beide würden dasselbe tun: Die Zeichenfolge zu einem einzigen Parameter machen. Im Beispiel Ihres am start
Befehls ist Folgendes beim Parsen passiert:
- Befehl:
am
- Parameter 1:
start
- Parameter 2:
-S
- Parameter 3:
com.android.settings/.Settings$PowerUsageSummaryActivity
- hat eine
$
, interpretiert: variable $PowerUsageSummaryActivity
ist nicht gesetzt, also leer
- Schlussfolgerung: Parameter 3 ist
com.android.settings/.Settings
Beachten Sie auch , dass , wenn Sie diese laufen direkt über adb shell
der Befehl durch Shell geht zweimal Parsen, so dass Sie entkommen müssen, oder notieren Sie den Befehl erneut , wie folgt aus :
user@desktop:~$ adb shell am start -n 'com.android.settings/.Settings\$PowerUsageSummaryActivity'
'com.android.settings/.Settings$PowerUsageSummaryActivity'
- oder Flucht der$
wiecom.android.settings/.Settings\$PowerUsageSummaryActivity
- das ist die übliche Material auf der Schale zu tun , wenn sie mit wörtlichen Umgang$
Zeichen nicht eine Variable , die angibt?