簡體   English   中英

如何在groovy腳本的shell塊中聲明新變量?

[英]How to declare a new variable inside a shell block in groovy script?

為了我的一生,我無法弄清楚如何在Groovy腳本的shell塊內聲明和使用新變量。

例如,此shell塊-

sh """
    export earlist='abc.ear,def.ear'
    echo $earlist;
"""

拋出一個錯誤的說法

沒有這樣的屬性:類的清單:GroovyUserScript

如果我在sh之前添加一個def耳機列表 ,那么它會拋出錯誤,說-

沒有方法簽名:GroovyUserScript.sh()適用於參數類型:(org.codehaus.groovy.runtime.GStringImpl)值:[export earlist ='abc.ear,def.ear'echo;

有人可以幫我在groovy腳本中聲明和使用shell塊中的變量嗎?

請改用triple single quoted string ,該triple single quoted string不會插值變量:

sh '''
    export earlist='abc.ear,def.ear'
    echo $earlist;
'''

請參閱此處有關triple single quoted strings的文檔: http : //groovy-lang.org/syntax.html#_triple_single_quoted_string

這里概述了Groovy中可用的字符串類型: http : //groovy-lang.org/syntax.html#_string_summary_table

與我的工作場所的高級專家協商后,我找到了所需的解決方案。

此代碼的問題-

sh """
    export earlist='abc.ear,def.ear'
    echo $earlist;
"""

是當我說$ earlist時,編譯器會查找一個名為earlist的常規變量,但找不到它。 由於earlist中有一個shell變量,因此我需要轉義$。 因此,正確的代碼是-

sh """
    earlist='abc.ear,def.ear'
    echo \$earlist;
"""

獎勵TIL-如果我訪問shell塊內的常規變量,則該訪問為只讀。 我無法編輯groovy變量的值,即使在shell塊中也無法臨時編輯。 如果確實要這樣做,可以將groovy變量分配給shell變量,操縱shell變量值,將修改后的值保存在文件中,然后在shell塊結束時,將文件讀入原始groovy變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM