当前位置: 技术问答>linux和unix
求助关于Java调用shell再传值给shell的问题
来源: 互联网 发布时间:2017-01-11
本文导语: 各位大大,小弟求助一个问题,在Linux环境下我写了一个Java类去调用一个shell,并且传了一个参数过去,参数可以打印出来但是没法完成我的功能,请各位先看看我的代码吧: Java中调用shell的代码如下 String cmdArr [] =...
各位大大,小弟求助一个问题,在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的我已经加了可执行权限,求各位大大给小弟解惑,感激不尽!
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"};
直接这样呢?
{"/home/administrator/workspace/test.sh 00:1f:23:5e:56:74"};
直接这样呢?