Могу ли я использовать wild cards при выполнении процесса оболочки в другом рабочем каталоге?

Это моя текущая структура каталогов

/ <-- 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: can not stat * .php: Нет такого файла или каталога , я проверял, что файлы существуют, и я проверил свой текущий рабочий каталог

если я выполняю log.info 'ls -la'.execute (null, new File (' ./ php/')) Я вижу файлы PHP и .txt.

Это кажется длинным выстрелом, но я думаю, что может быть ошибка с использованием wild cards для команд при выполнении их в указанном рабочем каталоге, если нет чего-то, чего я не вижу?

Я использую groovy 1.7.5

2
добавлено отредактировано
Просмотры: 1
de

1 ответы

эта версия работает для меня, просто попробуйте:

    #!/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

The first answer on this question explains why your version did not work: Groovy execute "cp *" shell command

2
добавлено