这是我目前的目录结构
/ <-- current working Dir
/php/
file1.php
file2.php
file3.txt
我正在尝试执行以下groovy命令
def cp = 'cp -f *.php /tmp/'
def cpProc = cp.execute(null, new File('./php/')
cpProc.waitfor()
log.info 'current exitvalue :' + cpProc.exitValue()
log.info 'current proc out : ' + cpProc.text
但我一直在cp: cannot stat *.php': No such file or directory
,我已经验证了文件的存在,并且我已经验证了我当前的工作目录
如果我执行log.info 'ls -la'.execute(null, new File('./php/'))
,我会看到PHP和.txt文件。
这似乎是一个很长的镜头,但我认为在指定的工作目录中执行命令时可能会出现使用通配符的错误,除非有些东西我不知道?
我正在使用groovy 1.7.5
答案 0 :(得分:2)
这个版本适合我,试试看:
#!/usr/bin/env groovy
command = ["sh", "-c", "cp -f *.php /tmp/"]
def cpProc = command.execute(null, new File('./php/'))
cpProc.waitFor()
print 'current exitvalue :' + cpProc.exitValue() + '\n'
print 'current proc out : ' + cpProc.text + '\n'
print 'ls -la'.execute(null, new File('/tmp/')).text
此问题的第一个答案解释了为什么您的版本不起作用:Groovy execute "cp *" shell command