首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过bash脚本执行编译器标志

通过bash脚本执行编译器标志
EN

Stack Overflow用户
提问于 2018-12-14 18:55:53
回答 1查看 253关注 0票数 0

我刚开始使用bash脚本。我需要执行接受java类文件并将其转换为dex文件的dx命令。在这里,我的java类文件是apple.class,希望输出classes.dex文件,用于转换的命令是:

代码语言:javascript
运行
复制
dx -JXmx256m --debug --dex --dump-to=apple.lst --output=classes.dex --dump-width=1000 apple.class

我想通过bash脚本执行这个命令。以下是我的方法:

script.sh

代码语言:javascript
运行
复制
filelst="apple.lst"
filedex="classes.dex"
filecl="apple.class"

flag1="--dump-to=$file1st"
flag2="--output=$filedex"
flag3="--dump-width=1000 $filecl"
dx "--debug  --dex $flag1 $flag2 $flag3"

当我运行bash script.sh时,它会发送错误,显示运行dx命令的步骤。但是当我在没有bash脚本的情况下运行时,它成功执行了。请在bash脚本中帮助我编写正确的命令。

代码语言:javascript
运行
复制
error: no command specified                                                                                                                                
usage:                                                                                                                                                     
  dx --dex [--debug] [--verbose] ...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-14 19:08:22

dx看到的是一个论点,而不是--debug--dex等的单独论点。通常的方法是不引用$flag1等:

代码语言:javascript
运行
复制
dx --debug --dex $flag1 $flag2 $flag3

但是,如果任何嵌入选项都包含空格,那么这本身就有问题。

正确的解决方案是使用数组存储多个参数。

代码语言:javascript
运行
复制
filelst="apple.lst"
filedex="classes.dex"
filecl="apple.class"

flag1="--dump-to=$filelst"
flag2="--output=$filedex"
flag3=( --dump-width=1000 "$filecl")
dx --debug  --dex "$flag1" "$flag2" "${flag[@]}"

或者更简单

代码语言:javascript
运行
复制
flags=(--dump-to="$filelst" --output="$filedex" --dump-width=1000 "$filecl")
dx --debug --dex "{$flags[@]}"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53785430

复制
相关文章

相似问题

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