为什么这个 Gradle exec 命令在命令提示符下运行时会失败?
Why is this Gradle exec command failing when it works from command prompt?
我有一个 gradle 构建脚本,里面有这个:
exec {
commandLine 'cmd', '/c', 'C:/cygwin64/bin/bash', '-lc', "'file /cygdrive/c'"
}
显示以下错误失败:
/usr/bin/bash: file /cygdrive/c: No such file or directory
然而,直接从命令提示符执行此操作似乎工作正常:
PS D:\s\u\deployment\backend> cmd /c C:/cygwin64/bin/bash -lc 'file /cygdrive/c'
/cygdrive/c: directory
为什么这在我的 gradle 脚本中不起作用?对我如何完成这项工作有什么建议吗?
更一般地说,我想要一种通过 cygwin 执行任意命令的方法。
请尝试:
exec {
commandLine 'cmd', '/c', 'C:/cygwin64/bin/bash', '-lc', 'file /cygdrive/c'
}
没有 "
'file /cygdrive/c'
。
如果有人对 'running arbitrary commands via cygwin' 位感兴趣,我的结论是:
import org.apache.tools.ant.taskdefs.condition.Os
def isWindows() {
return Os.isFamily(Os.FAMILY_WINDOWS)
}
def runFromCommandLine (String... args) {
List<String> arguments
if (isWindows()) {
arguments = ['cmd', '/c', 'C:/cygwin64/bin/bash', '--login', '-c', args.join(' ')].toList()
}
else {
arguments = args.toList()
}
exec {
commandLine arguments
}
}
// usage
runFromCommandLine('file', '/cygdrive/c')
我有一个 gradle 构建脚本,里面有这个:
exec {
commandLine 'cmd', '/c', 'C:/cygwin64/bin/bash', '-lc', "'file /cygdrive/c'"
}
显示以下错误失败:
/usr/bin/bash: file /cygdrive/c: No such file or directory
然而,直接从命令提示符执行此操作似乎工作正常:
PS D:\s\u\deployment\backend> cmd /c C:/cygwin64/bin/bash -lc 'file /cygdrive/c'
/cygdrive/c: directory
为什么这在我的 gradle 脚本中不起作用?对我如何完成这项工作有什么建议吗?
更一般地说,我想要一种通过 cygwin 执行任意命令的方法。
请尝试:
exec {
commandLine 'cmd', '/c', 'C:/cygwin64/bin/bash', '-lc', 'file /cygdrive/c'
}
没有 "
'file /cygdrive/c'
。
如果有人对 'running arbitrary commands via cygwin' 位感兴趣,我的结论是:
import org.apache.tools.ant.taskdefs.condition.Os
def isWindows() {
return Os.isFamily(Os.FAMILY_WINDOWS)
}
def runFromCommandLine (String... args) {
List<String> arguments
if (isWindows()) {
arguments = ['cmd', '/c', 'C:/cygwin64/bin/bash', '--login', '-c', args.join(' ')].toList()
}
else {
arguments = args.toList()
}
exec {
commandLine arguments
}
}
// usage
runFromCommandLine('file', '/cygdrive/c')