Azure DevOps通过curl或获取任务输出值作为新变量



我需要通过curl restAPI进行内容grep并剪切某些字符,以获得一个新的令牌值作为变量但我不知道如何做卷发、grep、cut。。。变量中的操作

在变量中进行这些运算的逻辑可行吗?

前任。

- task: Bash@3
displayName: GetToken
inputs:
targetType: 'inline'
script: 
token= curl -H $HEADER -D $DATA www.example.com | grep -oEi $pattern | cut -d ':' -f 2 | cut -d '"' -f 2
echo "##vso[task.setvariable variable=token;]$token

或者我可以获取任务输出的值来设置一个新的变量吗?例如

- task: Bash@3
displayName: CreateToken
inputs:
targetType: 'inline'
script: 
curl --header $HEADER --data "{userKey:$USERKEY,orgToken:$ORGTOKEN,requestType:getAllProducts}" $API |grep -oEI ""productName":"$PRODUCTNAME","productToken":"[0-9a-f]*"" | cut -d ':' -f 3 | cut -d '"' -f 2
Output
========================== Starting Command Output ===========================
/bin/bash --noprofile --norc /home/vsts/work/_temp/a6f13e9c-2c45-4ac7-9674-42de3efe2503.sh
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   147    0     0  100   147      0    158 --:--:-- --:--:-- --:--:--   158
100 13655    0 13508  100   147  12577    136  0:00:01  0:00:01 --:--:-- 12714
33234d4db39844cf8c73c54e398c44c248ab368f319a4af7b9646cb461fa60b9 //I want to get this value as new variable
- task: Bash@3
displayName: GetCreateToken
inputs:
targetType: 'inline'
script:
Token= $CreateToken
echo "##vso[task.setvariable variable=token;]$token

如果我理解正确,您的问题是关于如何将shell脚本的输出传递到变量中以供其他任务使用?如果是这样的话,你可以将问题标题改为"Azure DevOps管道-将shell脚本输出传递到变量中",以帮助其他人找到答案。

无论如何,试试这个方法:

- bash: Bash@3
displayName: GetToken
inputs:
targetType: 'inline'
script: 
# Note the $() around the call of curl, grep and cut. If you want to assign the result of a call, then encapsulate it into $()
token=$(curl -H $HEADER -D $DATA www.example.com | grep -oEi $pattern | cut -d ':' -f 2 | cut -d '"' -f 2)
echo "##vso[task.setvariable variable=token;]$token"
# Just a side note: This is the short-hand syntax for using the bash task
- bash: |
echo "$(token)" 

另请参阅有关如何在脚本任务中设置管道变量的文档
如果你想在另一个作业中使用一个变量,那么语法有点不同,并记录在这里:

- job: A
steps:
- bash: |
token=$(curl -H $HEADER -D $DATA www.example.com | grep -oEi $pattern | cut -d ':' -f 2 | cut -d '"' -f 2)
echo "##vso[task.setvariable variable=token;isOutput=true]$token"
displayName: GetToken
name: gettoken # you have to give the task a name to be able to access it through dependencies object below
- job: B
dependsOn: A
variables:
token: $[ dependencies.A.outputs['gettoken.token'] ]

您可能还了解了如何将变量设置为Bash中命令的输出?。

最新更新