首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在bash脚本中运行apktool

在bash脚本中运行apktool
EN

Stack Overflow用户
提问于 2015-10-30 20:23:18
回答 1查看 1.2K关注 0票数 2

我正在尝试编写一个bash脚本,它使用apktool对几个.apk文件进行解压缩。每个apk文件位于示例文件夹的子目录中。

代码语言:javascript
复制
#!bin/bash


for item in $(ls samples);
do
        for apk in $(ls "samples/$item");
        do 
            echo ./apktool/apktool d "./samples/$item$apk" 
            $(./apktool/apktool d "./samples/$item$apk")
        done    
done

当我运行这个脚本时,我得到以下输出:

代码语言:javascript
复制
./apktool/apktool d ./samples/ADRD/53dc.apk*
Input file (./samples/ADRD/53dc.apk*) was not found or was not readable.

输入文件错误消息是apktool找不到文件时的标准。但是,如果我在终端中运行以下命令,apktool将正确工作。

代码语言:javascript
复制
./apktool/apktool d ./samples/ADRD/53dc.apk*

对于所有用户,我已经将位于示例文件夹中的所有文件的权限更改为rw。我也尝试过在shell脚本中使用sudo,但这会导致脚本挂起。但是,当我在命令行中使用sudo时,apktool也会挂起。因此,我不确定使用sudo和apktool是否可行。

任何帮助都是非常感谢的,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-31 07:45:23

因此,这个ls为您提供了一个在apk文件名末尾附加星号*的输出,因为该文件是可执行的。

代码语言:javascript
复制
    for apk in $(ls "samples/$item");

这不是ls的默认行为,可能是因为您将ls别名为ls -F或类似的。若要绕过别名,请用以下方式重写行:

代码语言:javascript
复制
    for apk in $(\ls "samples/$item");

注意我在那里添加的\

顺便说一下,apk文件是可执行的,这是正常的吗?也许您可以删除可执行位:

代码语言:javascript
复制
find samples -name '*.apk' -exec chmod -x {} \;

另外,您的脚本可能会被以下一行替换:

代码语言:javascript
复制
find samples -name '*.apk' -exec ./apktool/apktool d {} \;

请注意,这不是完全相同的事情,因为它可能比两个目录更深。如果您需要限制深度,这也是可能的,请参见man find

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33444341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档