【发布时间】:2019-01-13 09:22:48
【问题描述】:
这是我目前在 sh 脚本中执行的 sh 命令:
sh bin/vtdStart.sh -project=4 -setup="Sim" -autoConfig >& debug.txt
我想要的是在 java 中执行脚本“vtdStart.sh”并同时设置项目、设置、自动配置。我该怎么做?
【问题讨论】:
标签: java shell sh processbuilder runtime.exec
这是我目前在 sh 脚本中执行的 sh 命令:
sh bin/vtdStart.sh -project=4 -setup="Sim" -autoConfig >& debug.txt
我想要的是在 java 中执行脚本“vtdStart.sh”并同时设置项目、设置、自动配置。我该怎么做?
【问题讨论】:
标签: java shell sh processbuilder runtime.exec
我假设您实际要执行的命令行是这样的:
bin/vtdStart.sh -project=$SM_PROJECT -setup=$SM_SETUP -autoConfig >& debug.txt
并且vtdStart.sh 设置了执行位和#!/bin/sh 行。
有两种方法可以做到这一点:
您可以手动进行环境变量插值,拆分命令参数,拉出重定向等,然后将它们与ProcessBuilder放在一起。
你可以用简单的方法做到这一点:
Runtime.exec("/bin/sh", "-c",
"bin/vtdStart.sh -project=$SM_PROJECT -setup=$SM_SETUP -autoConfig >& debug.txt");
让shell处理扩展和重定向。
【讨论】: