Helo!如何在groovy中的命令行參數中使用星號(*)?
我有一個參數的groovy腳本。爭論必須是一個正則表達式模式。我想在參數中使用*,但總是得到:該命令的語法不正確。
這是一個例子(opt.p是將圖案從ARG獲得):我想從這樣的命令行中使用腳本
def map1 = [e:'pine___apple', f:'pineapple']
map1.each { entry ->
entry.value.find(~/$opt.p/) { match -> println entry.value}
}
:
groovy test -p pine_ * a
我期待的結果是:
pine___apple
菠蘿
我嘗試這些解決方法多,但沒有任何工程:
pine_*a
"pine_*a"
'pine_*a'
pine_\*a
'pine_\*a'
"pine_\*a"
pine_'\*'a
pine_"\*"a
pine_'\\*'a
pine_"\\*"a
有人知道如何解決這個問題? 非常感謝!
編輯:
我用:
Groovy的 版本:2.4.6 JVM:1.7.0_45供應商:Oracle公司操作系統: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
如果該值未加引號,則需要用shell代替文件名。例如:'touch pine_fooled_ya; groovy test -p pine_ * a'。傳遞一個正則表達式最安全的方法是使用單引號:'groovy test -p'pine_ * a'' –