gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:26:35 25 4
gpt4 key购买 nike

我需要通过 curl restAPI 执行内容 grep 并剪切某些字符以获得新的标记值作为变量但我不知道如何在变量中进行 curl、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)"

另见 docs关于如何在脚本任务中设置管道变量。
如果你想在另一个作业中使用一个变量,那么语法有点不同,documented here :

- 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'] ]

您也可以看看 How do I set a variable to the output of a command in Bash? .

关于bash - Azure DevOps 通过 curl 或获取任务输出值作为新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60615593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com