2

これは私の現在のディレクトリ構造です

/ <-- 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を使用しています

4

1 に答える 1

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

この質問の最初の答えは、バージョンが機能しなかった理由を説明しています。Groovyexecute "cp *" shell command

于 2012-12-28T10:20:15.617 に答える