作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在.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
}
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
}
关于unix - 如何从gradle中的文件执行带有多个参数的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39094648/
我是一名优秀的程序员,十分优秀!