Есть ли способ запустить Bash из Groovy - PullRequest
0 голосов
/ 13 марта 2019

У меня есть цикл for от bash, и я пытаюсь перевести его на отличный язык, но я не могу понять, как ... Пожалуйста, помогите ..

for i in $(ls *.fastq.gz | rev | cut -c 10- | rev | uniq)
do
echo $i;
mkdir $i;
done

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

что-то в этом роде, но я не знаю всех команд bash:

new File('/my/dir').listFiles( {it.name.endsWith('.fastq.gz')} as FileFilter ).each{
    println it
    it.mkdirs() //however this will fail because file with same name exists
}
0 голосов
/ 13 марта 2019

Хотя просить людей написать скрипт для вас не по теме StackOverflow, возникает конкретная проблема, такая как «Как запустить многострочную команду Bash из Groovy?» нет, и вот как вы можете это сделать:

$ cat foo.groovy
println (['bash', '-c', '''

for i in $(ls *.fastq.gz | rev | cut -c 10- | rev | uniq)
do
  echo $i;
  mkdir $i;
done

'''].execute().text)

$ touch mytestfile.fastq.gz
(no output)

$ groovy foo.groovy
mytestfile

$ ls -ld mytestfile
drwxr-xr-x. 1 myuser users 0 Mar 13 09:36 mytestfile

$ groovy --version
Groovy Version: 1.8.9 JVM: 1.8.0_191 Vendor: Oracle Corporation OS: Linux

Это не такая хорошая практика, как встроенная реализация в Groovy, но значительно меньше работы, когда вы не знакомы с языком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...