2013-05-29 3 views
0

Я пробовал следующий написанный мной сценарий.Скопируйте файлы apk в сценарий bash

#!/bin/bash 
adb -s 015d2578a7280412 shell ls /data/app > apps.txt 
while read line 
do 
    apk=/data/app/$line 
    adb -s 015d2578a7280412 pull $apk apk-nexus7-default 
done < apps.txt 

Я получил ошибки как:

' does not existdata/app/com.StudioOnMars.CSPortable-1.apk 
' does not existdata/app/com.adobe.reader-1.apk 
... 

Когда я попытался

adb -s 015d2578a7280412 pull /data/app/com.adobe.reader-1.apk apk-nexus7-default

Он работал.

Любая проблема с куском скриптов?

+0

Попробуйте запустить скрипт в режиме отладки. 'bash -x scriptname' –

+1

Ваша проблема заключается в том, что ADB предполагает, что он будет разговаривать с хостом Windows и вставляет внешние данные каретки в вывод' ls', которые путают ваш скрипт. –

+0

@ChrisStratton Интересный момент! Как я могу легко преодолеть это? – JackWM

ответ

1

Это известная проблема с adb - что даже в Linux он использует MSDOS стиле newline символов - CR+LF ('\r\n'), а не только LF ('\n').

Самый простой способ уменьшить это удалить '\r' из adb выхода

adb -s 015d2578a7280412 shell ls /data/app | tr -d '\r'> apps.txt 
0

Вобще:

$ adb -s 015d2578a7280412 pull /data/app/ 

pull: building file list... 
pull: /data/app/some.apk -> ./some.apk 
... 
Смежные вопросы