Chcę skopiować pliki tekstowe i tylko pliki tekstowe z src/
do dst/
Groovy wykonać polecenie „cp *” shell
groovy:000> "cp src/*.txt dst/".execute().text ===> groovy:000>
widać polecenia wykonuje w/out błędu ale plik src/test.txt
nie zostanie skopiowany do dst/
ta zawodzi również:
groovy:000> "cp src/* dst/".execute().text ===> groovy:000>
jednak ...
"cp src/this.txt dst/".execute().text
działa
Również
"cp -R src/ dst".execute().text
działa
Dlaczego dozować dzika karta wydaje się powodować moje polecenie, aby po cichu nie?
myślę, że można uprościć z: polecenia = .... command.execute() jako tablice również zrozumieć wykonać – TimM
tego powodu, że '" sh -c „cp src/* txt DST /. "" "nie działa, ponieważ Groovy zinterpretuje cytowany ciąg znaków z białymi spacjami jako wieloma argumentami. Tak więc groovy w rzeczywistości wykonuje sh z następującymi argumentami: arg1 = -c, arg2 = 'cp, arg3 = src/*. Txt, arg4 = dst /' Takie polecenie spowoduje błąd "Ciągnik bez cudzysłowów". Masz prawidłowe rozwiązanie, które polega na użyciu tablicy. Również, @TimM ma rację, możesz uprościć powyższe do '[" sh "," -c "," cp src/*. Txt dst/"]. Execute()' – BennyFlint
Jeśli budujesz polecenia dynamicznie rozwiązanie z sh -c i tablicą jest najlepszym rozwiązaniem. Po prostu wykonaj: def polecenie = (tutaj wytworzymy polecenie) def proc = ["sh", "-c", polecenie] .execute() – henrik