当前位置: 首页 > 面试题库 >

用参数执行

龚铭
2023-03-14
问题内容

我在用Java执行需要参数的批处理文件时遇到困难。这些参数可能包含空格,因此我需要将它们用引号引起来。对于Linux,我还将需要做同样的事情,因为某些参数可能包含特殊字符,例如!

非功能性Windows程式码:

ProcessBuilder pb = new ProcessBuilder(
        "cmd",
        "/c",
        "\"mybat.bat\"",
        "\"param 1\"",
        "\"param 2\"",
        "\"param 3\""
        );

非功能性Linux程式码:

ProcessBuilder pb = new ProcessBuilder(
        "bash",
        "-c",
        "'myshellscript.sh'",
        "'param 1'",
        "'param 2'",
        "'param 3'"
        );

我知道我应该像下面的Windows示例一样添加参数,但这不适用于空格:

ProcessBuilder pb = new ProcessBuilder(
        "cmd",
        "/c",
        "mybat.bat param 1 param 2 param 3"
        );

应该怎么做?


问题答案:

视窗:

ProcessBuilder pb = new ProcessBuilder(
        "cmd", "/c", "mybat.bat", 
        "param 1", "param 2", "param 3");

Unix:

ProcessBuilder pb = new ProcessBuilder(
        "sh", "mybat.sh", 
        "param 1", "param 2", "param 3");


 类似资料:
  • 问题内容: 给定以下函数调用: 的执行顺序和未指定,所以可以之前被调用或之前在。 是否指定函数参数表达式的执行顺序或未指定的顺序? 问题答案: 从Java语言规范(关于表达式)中: 15.7.4从左到右评估参数列表 在方法或构造函数调用或类实例创建表达式中,参数表达式可能出现在括号内,以逗号分隔。每个参数表达式似乎都在其右侧任何参数表达式的任何部分之前被完全评估。

  • 我试图运行这个简单的原始sql语句与参数SQLALChemy(在一个alembic脚本): 我得到以下错误: 解决方案:

  • 问题内容: 我在詹金斯(Jenkins)有一份工作,有2个参数。我要运行另一个没有参数的计划,并从该计划中启动所需的现有计划多次。 新计划需要安排为每15分钟运行一次(将由Jenkins的Scheduler选项完成),该计划的代码将: 连接到数据库 获取所需的记录集 开始循环记录集 存储键/值对(现有作业的参数) 结束循环 完成此操作后,我需要对存储的每个键/值对运行现有作业。我可以使用Jenki

  • 问题内容: 我在Perl中编写了一些代码,该代码在其执行过程中执行了一些bash命令。我的问题是bash命令属性包含空白,而bash命令执行失败。但是我设法使用了这些参数,只是在参数周围添加了引号。不幸的是,在测试过程中,我发现当字符放在变量的末尾时,脚本会失败,这显然使bash执行引号转义,并使bash命令失败。例如: 是否有机会自动将变量中的特殊字符转义? 问题答案: 在bash中使用单引号要

  • 问题内容: 我的包体内有一个proc: 我在包装规格中公开了这一点。 如何在PL SQL Developer(或类似版本)的新SQL窗口中执行此过程? 问题答案: 您可以相对轻松地执行该过程 当然,这只是将游标返回到调用应用程序。它不执行任何操作来从游标中获取数据,对该数据执行任何操作或关闭游标。假设您的目标是向其中写入一些数据(有时对于原型设计很有用,但生产代码不应该依赖该数据),则可以执行以下