groovy Строка не выполняется - PullRequest
0 голосов
/ 31 марта 2020

Я пишу groovy метод для удаления символов новой строки из файла.

def removeEmptyLines(filePath){
    cmd="""sed -i '/^\$/d' ${filePath}
    """
    println cmd
    result = cmd.execute()
    result.waitFor()
    println result.exitValue()
}
removeEmptylines("/path/to/file.txt")

Мой вывод:

sed -i '/^$/d' /path/to/file.txt
1

файл остается неотредактированным и, очевидно, выход статус ненулевой однако, если я буквально копирую и вставляю первый вывод в командную строку, это работает. Я использую абсолютные пути.

Я предполагаю, что groovy не нравятся символы регулярного выражения в моей команде. как мне обойти это?

1 Ответ

1 голос
/ 31 марта 2020

Удалите одинарные кавычки (вам не нужно заключать в кавычки для оболочки, потому что оболочка не задействована).

String.execute() обычно не то, что вы хотите, потому что она разделяется в пробеле. Так что вам лучше использовать либо ["sed", "-i", ... ].execute(), либо, если вам нужны оболочки, используйте ["sh", "-c", "sed -i '..."].execute().

...