gpt4 book ai didi

unix - 如何从gradle中的文件执行带有多个参数的命令?

转载 作者:行者123 更新时间:2023-12-03 05:13:23 25 4
gpt4 key购买 nike

我在.txt-file中有以下命令:

java -jar /path/to/something.jar --classpath="/path/to/something/other.jar" --url="something:@127.0.0.1:1234:TEST12" --driver=some.driver update

可以看出,使用了具有不同语法的多个参数(带有 ---和/或带有和不带有 "")。

我尝试了以下代码:
task test(type: Exec) {
workingDir '/path/to/working/dir'
String commandFromFile = new File('/path/to/file/with/command' + 'filewithcommand.txt').getText('UTF-8')
commandLine commandFromFile
}

在Windows平台上,此代码有效,但在 unix上则无效。

最佳答案

正如在the documentation of the Exec task中看到的那样,您应该将命令分成几个部分。因此,如果参数中没有空格,则执行commandLine commandFromFile.split(' ')应该可以。如果有的话,您需要一种更复杂的方法来拆分考虑引号的命令。

或者,您可以更改命令文件的格式,使其每行只有一个参数,然后使用.readLines('UTF-8')而不是.getText('UTF-8')

我不确定以下内容,但可能是您还必须删除参数周围的引号,即使它们包含空格也是如此,因为您将参数作为单个实体提供给commandLine调用,因此无需使用引号进行转义这里的空格。根据调用的操作系统和工具,如果存在无法处理的引号,它甚至可能中断命令。

或者,但这是最糟糕的方法,您也可以做类似

if (windows) {
commandLine 'cmd', '/c', commandFromFile
} else {
commandLine 'sh', '-c', commandFromFile
}

然后命令处理器在其中进行拆分,依此类推。在那里,您当然需要报价和其他东西。当然,在此示例中,需要确定windows变量,例如。 G。从系统属性。

关于unix - 如何从gradle中的文件执行带有多个参数的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39094648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com