Helo!Как я могу использовать звездочку (*) в аргументах командной строки в groovy?
У меня есть отличный скрипт с одним аргументом. Аргумент должен быть шаблоном регулярного выражения. Я хочу использовать * в аргументе, но всегда получил: Синтаксис команды неверен.
Это пример (opt.p является образцом получения от арг):
def map1 = [e:'pine___apple', f:'pineapple']
map1.each { entry ->
entry.value.find(~/$opt.p/) { match -> println entry.value}
}
Я хочу использовать скрипт из командной строки таким образом:
заводной тест -p pine_ * а
И я надеюсь, что результат будет:
pine___apple
ананас
Я попробовал эти решения и больше, но ничего не работает:
pine_*a
"pine_*a"
'pine_*a'
pine_\*a
'pine_\*a'
"pine_\*a"
pine_'\*'a
pine_"\*"a
pine_'\\*'a
pine_"\\*"a
Кто-нибудь знает, как решить эту проблему? Спасибо большое!
EDIT:
Я использую:
Groovy Версия: 2.4.6 JVM: 1.7.0_45 Производитель: Корпорация Oracle OS: Windows 7
И я также использую CliBuilder:
def cli = new CliBuilder()
cli.with
{
p('pattern', args: 1, required: false)
}
def opt = cli.parse(args)
Почему, по вашему мнению, у 'opt.p' есть свой аргумент? У вас есть код в вашем groovy, который устанавливает эту переменную? Попробуйте распечатать 'opt.p', чтобы увидеть, что он содержит. – Vampire
Если значение некотируется, вы подпадаете под подстановочные имена файлов. Например: 'touch pine_fooled_ya; groovy test -p pine_ * a'. Самый безопасный способ передать регулярное выражение в одинарных кавычках: 'groovy test -p 'pine_ * a'' –