2013-05-29 41 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

嘗試在調試模式下運行腳本刪除'\r'。 'bash -x scriptname' –

+1

你的問題是,亞行假定它將與Windows主機通話,並在'ls'的輸出中插入無關的回車符,這會混淆你的腳本。 –

+0

@ChrisStratton有趣的一點!我如何輕易克服這一點? – JackWM

回答

1

這是一個已知的問題adb - 即使在Linux中使用MSDOS風格newline人物 - CR+LF'\r\n'),而不是僅僅LF'\n')。

減輕這種最簡單的方法是從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 
... 
相關問題