如何从Java索引中插入Shell脚本

时间:2018-08-05 11:48:13

标签: java shell

我正在使用Java运行sh文件。

但是,问题是在为Eclipse执行sh文件时如何将Java变量放入sh变量中。

我正在使用日食。

这是我的代码

test.sh
#!/bin/sh
docker run -it --name $1 ubuntu:16.04
exit 0

在Java中

public static void makeContainer() throws Exception {
    //String makecontainer = "/usr/local/bin/docker run --name "+fileName+" ubuntu:16.04";

    String[] command = { "/bin/sh","/Users/keomgong1/Desktop/test.sh", fileName };
    Process process = Runtime.getRuntime().exec(command);

    process.getInputStream();
    InputStream is = process.getInputStream();
    BufferedReader bf = new BufferedReader(new InputStreamReader(is));

}

我想要$ 1作为文件名,但是它没有按预期运行。

文件名是Java字符串索引。

怎么了?

我该怎么办?

1 个答案:

答案 0 :(得分:2)

脚本名称之后的第一个参数是程序名称($0),而不是第一个位置参数($1)。

您可以为$0添加一个虚拟文件名,然后下一个参数将为$1

String[] command = { "/bin/sh","/Users/keomgong1/Desktop/test.sh", "_", fileName };

但是,最好直接运行脚本而不是使用/bin/sh

String[] command = { "/Users/keomgong1/Desktop/test.sh", fileName };

这需要test.sh有一个Shebang(第一行是#!/bin/sh)并具有执行权限(chmod +x /Users/keomgong1/Desktop/test.sh)。