我想复制文本文件并仅从
此外,
为什么通配符似乎导致我的命令静默失败?
src/
复制到dst/
groovy:000> "cp src/*.txt dst/".execute().text ===> groovy:000>您可以看到命令执行时没有错误,但文件
src/test.txt
未被复制到dst/
这也失败了:
groovy:000> "cp src/* dst/".execute().text ===> groovy:000>然而...
"cp src/this.txt dst/".execute().text可以工作
此外,
"cp -R src/ dst".execute().text可以工作
为什么通配符似乎导致我的命令静默失败?
command = .... command.execute()
因为数组也能理解execute。 - TimM"sh -c 'cp src/*.txt dst/''"
无法正常工作的原因是 Groovy 会将带有空格的引号字符串参数解释为多个参数。因此,Groovy 实际上使用以下参数执行 sh: arg1 = -c,arg2 = 'cp,arg3 = src/*.txt,arg4 = dst/' 这样的命令将导致 "Unterminated quoted string" 错误。您已经有了正确的解决方案,即使用数组。同时,@TimM 是正确的,您可以将上述代码简化为["sh", "-c", "cp src/*.txt dst/"].execute()
。 - BennyFlint["sh", "-c", "cp *.png dest/"].execute()
时,仍然会出现“*.png:没有这样的文件或目录”的错误。 - devios1