【发布时间】:2014-05-28 08:42:32
【问题描述】:
我正在尝试从 Java 代码运行 shell 脚本。目前我在脚本中手动提供数据,但我希望能够从运行脚本的 Java 代码中提供变量。
这是Java代码和脚本:
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder(
"/home/najib/upload.sh");
Process p = pb.start();
p.waitFor();
System.out.println("Script executed successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
外壳代码:
#!/bin/bash
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="set AUTOCOMMIT MANUAL;"&
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="delete from DB.DBA.load_list;"&
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="SPARQL CREATE GRAPH <VAR1>;"&
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="ld_dir('/home/najib', 'VAR2', 'VAR1');"&
wait
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="rdf_loader_run();"
我想知道我可以将变量放在 Java 代码中的什么位置,以及如何在运行时调用它!
编辑: 根据提供的解决方案,我将脚本更改为:
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="SPARQL CREATE GRAPH <$2>;"&
/usr/local/virtuoso-opensource/bin/isql 1111 dba dba exec="ld_dir('/home/najib', '$1', '$2');"&
我还在脚本末尾添加了一个回显,以查看变量是否正确传递,并且似乎是正确的。第一个命令(SPARQL 的命令)似乎在确实创建了图形时起作用,但第二个命令没有正确处理..
【问题讨论】:
标签: java bash shell variables parameters