首页 > 解决方案 > 如何在 java 中运行带有分配选项的 sh 命令

问题描述

所以这是我目前在 sh 脚本中执行的 sh 命令:

sh bin/vtdStart.sh -project=4 -setup="Sim" -autoConfig >& debug.txt

我想要的是在java中执行脚本“vtdStart.sh”并同时设置项目、设置、自动配置。我怎样才能做到这一点?

标签: javashellshprocessbuilderruntime.exec

解决方案


我假设您实际要执行的命令行是这样的:

 bin/vtdStart.sh -project=$SM_PROJECT -setup=$SM_SETUP -autoConfig >& debug.txt

vtdStart.sh就是设置了执行位和#!/bin/sh一行。

有两种方法可以做到这一点:

  1. 您可以手动进行环境变量插值,拆分命令参数,拉出重定向等,然后将它们与ProcessBuilder.

  2. 你可以用简单的方法做到这一点:

    Runtime.exec("/bin/sh", "-c", 
      "bin/vtdStart.sh -project=$SM_PROJECT -setup=$SM_SETUP -autoConfig >& debug.txt");
    

    并让外壳处理扩展和重定向。


推荐阅读