我想通過 jenkins 中的執行 shell 在 Linux 中運行以下命令。
當我直接在 Linux 中運行它時,我得到:
$ polyspace-access -list-project XX/YY -host MyHost -protocol http -login MyUsername -encrypted-password MyPassword
Connecting to MyHost
Connecting as MyUsername
Get project list with the last Run Id
XX/YY RUN_ID 10
Command Completed
我可以在 Jenkins 中運行相同的命令,但是——
export RunID=`polyspace-access -list-project XX/YY -host MyHost -protocol http -login MyUsername -encrypted-password MyPassword`
echo "This is my RunID: $RunID"
...結果如下:
15:06:59 這是我的 RuleID:連接到 MyHost 15:06:59 以 MyUsername 身份連接 15:06:59 獲取具有最后一個運行 ID 的專案串列 15:06:59 XX/YY RUN_ID 10 15:06:59 命令完全的
如何從結果中只讀取 RUN_ID 號?
uj5u.com熱心網友回復:
你可以用一些 groovy 來做到這一點。請檢查以下示例管道。我只是在腳本塊中回顯您的輸出。
pipeline {
agent any
stages {
stage('GetID') {
steps {
script {
string = sh(returnStdout: true, script: 'echo "15:06:59 This is RUN10X my RuleID: Connecting to MyHost 15:06:59 Connecting as MyUsername 15:06:59 Get project list with the last Run Id 15:06:59 XX/YY RUN_ID 10 15:06:59 Command Completed"').trim()
def runId = string.split("RUN_ID")[1].split(" ")[1]
echo "$runId"
}
}
}
}
}
注意:您可能需要改進腳本部分以處理錯誤情況。
uj5u.com熱心網友回復:
如果你的 shellawk可用,你可以通過它管道輸出以詢問包含文本“RUN_ID”的行中的第三個欄位:
runid=`polyspace-access -list-project XX/YY -host MyHost -protocol http -login MyUsername -encrypted-password MyPassword | awk '/RUN_ID/ { print $3 }'`
echo "This is my RunID: $runid"
如果您知道這XX/YY是一個固定字串,則可以將模式匹配調整為更嚴格。$NF如果可能有超過三個欄位但所需的數字始終是最后一個欄位,您也可以調整列印。
uj5u.com熱心網友回復:
如果您想對其進行概括,使其"RUN_ID"周圍有空格,并始終列印出最后一列,請嘗試:
# (broken apart for readability - it's one single string)
echo 'abc def -$314,159,265,358,979,323.84 XX/YY 2277118.822881188'
' RUN_ID 3321928094887362347870319429489390175' |
{m,g}awk '$!NF=$(NF*=!_!~NF)' FS=' RUN[_]ID '
gawk '$_=$(NF*=!_<NF)' FS=' RUN[_]ID '
mawk '$! NF=$--NF' FS=' RUN[_]ID '
.
3321928094887362347870319429489390175
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/490233.html
