我刚开始使用bash脚本。我需要执行接受java类文件并将其转换为dex文件的dx
命令。在这里,我的java类文件是apple.class
,希望输出classes.dex
文件,用于转换的命令是:
dx -JXmx256m --debug --dex --dump-to=apple.lst --output=classes.dex --dump-width=1000 apple.class
我想通过bash脚本执行这个命令。以下是我的方法:
script.sh
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脚本中帮助我编写正确的命令。
error: no command specified
usage:
dx --dex [--debug] [--verbose] ...
发布于 2018-12-14 11:08:22
dx
看到的是一个论点,而不是--debug
、--dex
等的单独论点。通常的方法是不引用$flag1
等:
dx --debug --dex $flag1 $flag2 $flag3
但是,如果任何嵌入选项都包含空格,那么这本身就有问题。
正确的解决方案是使用数组存储多个参数。
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[@]}"
或者更简单
flags=(--dump-to="$filelst" --output="$filedex" --dump-width=1000 "$filecl")
dx --debug --dex "{$flags[@]}"
https://stackoverflow.com/questions/53785430
复制相似问题