日期:2014-05-16  浏览次数:20731 次

求助关于Java调用shell再传值给shell的问题
各位大大,小弟求助一个问题,在Linux环境下我写了一个Java类去调用一个shell,并且传了一个参数过去,参数可以打印出来但是没法完成我的功能,请各位先看看我的代码吧:

Java中调用shell的代码如下
String cmdArr [] = {"/bin/sh", "-c", "sh /home/administrator/workspace/test.sh 00:1f:23:5e:56:74"};
Runtime runtime = new Runtime.getRuntime();
runtime.exec(cmdArr);
===================================================
test.sh中代码如下
#!/bin/sh
echo $1
sudo ifconfig eth0 down
sudo ifconfig eth0 ether $1
sudo ifconfig eth) up

这样一调用echo这句话所传过来的mac地址是可以打印的,也就是参数是已经从java传到shell中了的,但是该shell执行完毕后mac地址还是没有改成java传过来的值,这是为什么呢?

但是如果我把shell改成这样
sudo ifconfig eth0 down
sudo ifconfig eth0 ether 00:1f:23:5e:56:74
sudo ifconfig eth) up


$ sudo ./
$ ifconfig eth0
发现mac地址已经改变了,test.sh的我已经加了可执行权限,求各位大大给小弟解惑,感激不尽!

------解决方案--------------------
{"/bin/sh", "-c", "/home/administrator/workspace/test.sh 00:1f:23:5e:56:74"};
这样呢?
------解决方案--------------------
对java不熟悉
{"/home/administrator/workspace/test.sh 00:1f:23:5e:56:74"};
直接这样呢?