Yorumumda yazdığım gibi, kabuk komut isteminde (veya kabuk komut dosyalarında) çalışırken ekstra dikkat gerektiren bazı özel karakterler var. Bunlardan biri, $
genellikle bir değişkeni gösteren işarettir. Kelimenin tam anlamıyla alınması gerekiyorsa, kaçmanız gerekir (veya tüm dizeyi tek tırnak işaretleri içine almanız gerekir). Tırnak işaretleri için benzer kurallar.
Kaçan komutunuzla komutunuz nasıl görünmeli $
, zaten eldarerathis'ın cevabında bulabilirsiniz :
shell@android:/ # am start -n com.android.settings/.Settings\$PowerUsageSummaryActivity
Önünde "ters eğik çizgi" dikkat edin $
- bu kaçış işareti. Komutunuz kelimenin tam anlamıyla alınacak bazılarını içeriyorsa, tırnak işaretleri veya boşluklar için de aynısını kullanın;
myscript.sh first\ parameter\!
myscript.sh "first parameter!"
her ikisi de aynı şeyi yapar: Dizeyi tek bir parametre yapmak. am start
Komut örneğinizde , ayrıştırmada olan buydu:
- komut:
am
- parametre 1:
start
- parametre 2:
-S
- parametre 3:
com.android.settings/.Settings$PowerUsageSummaryActivity
- bir
$
, yorumlama var: değişken $PowerUsageSummaryActivity
ayarlanmadı, çok boş
- sonuç: parametre 3
com.android.settings/.Settings
Bunu doğrudan üzerinden çalıştırırsanız adb shell
, komutun kabuk ayrıştırma işleminden iki kez geçtiğini, bu nedenle komuttan tekrar kaçmanız veya alıntı yapmanız gerektiğini unutmayın :
user@desktop:~$ adb shell am start -n 'com.android.settings/.Settings\$PowerUsageSummaryActivity'
'com.android.settings/.Settings$PowerUsageSummaryActivity'
- veya kaçan$
gibicom.android.settings/.Settings\$PowerUsageSummaryActivity
- literal ile uğraşırken kabuk üzerinde yapılacak olağan şeyler hangi$
işaretler değil bir değişken belirten?