首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

关于Java调用shell再传值给shell的有关问题

2012-03-22 
求助关于Java调用shell再传值给shell的问题各位大大,小弟求助一个问题,在Linux环境下我写了一个Java类去调

求助关于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"};
直接这样呢?

热点排行