2016-08-11 39 views
-2

我想要一个脚本来在android手机上勾选首选项时执行脚本。切换完成,但现在执行这个:如何将bash脚本语言转换为java

if (preference == mRandomizeMac) { 
     SystemProperties.set(RANDOMIZE_MAC_PERSIST_PROP, (Boolean) newValue ? "1" : "0"); 

取而代之的系统属性,我想有执行下面的脚本:

macaddr="$(dd if=/dev/urandom bs=1024 count=1 2>/dev/null|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4:\5:\6/')" 
echo $macaddr > /sys/devices/fb000000.qcom,wcnss-wlan/wcnss_mac_addr 

回答

1

假设你的意思Java而不是javascript,由于你的例子的语法。

您可以使用Runtime.getRuntime().exec(String)执行shell命令。尝试将您的命令传递给该方法。如果这不起作用,您可以尝试通过结构为["/bin/sh", "-c", **command**]String[]

+0

感谢您的回答。不幸的是,我不是一名程序员,而是一名自学成才的业余爱好者。我可以正确实施提交,解决冲突,回应错误,但我无法创建语言。所以,如果你能向我展示你提到的两种方法的详细例子,我将不胜感激。我想在.java文件中传递该脚本...提前致谢。 –

+0

请允许我以这种方式解释它。您不能将您的bash脚本“转换”为Java。你可以做的是从Java代码执行shell命令。你的bash脚本只是执行shell命令的一种奇特方式。因此,您需要研究如何从Java执行shell命令(使用'Runtime.getRuntime()。exec'调用)并获取这些命令的输出。我无法为你做所有的研究,但我可以给你一些关于从哪里开始的指导。 –

+0

我没有实现Runtime.getRuntime ...现在,编译器不喜欢实际Shell脚本中的括号:非法转义字符:echo $(dd if =/dev/urandom bs = 1024 count = 1 2>/dev/null | md5sum | sed's/^ \(.. \)\(.. \)\(.. \)\(.. \)\(.. \)\(.. \)。* $/\ 1 :\ 2:\ 3:\ 4:\ 5:\ 6 /')“}); 我正在说括号.. \ –