Saya harus melalui curl restAPI dan melakukan konten grep dan memotong karakter tertentu untuk mendapatkan nilai token baru sebagai variabel Tapi saya tidak tahu cara membuat curl, grep, cut ... operasi dalam variabel

Apakah logika melakukan operasi ini dalam variabel layak?

MANTAN.

- 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

Atau bisakah saya mendapatkan nilai keluaran tugas untuk menetapkan variabel baru? mantan.

- 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
2
eddy chi 10 Maret 2020, 13:20

1 menjawab

Jawaban Terbaik

Jika saya memahami Anda dengan benar, pertanyaan Anda adalah tentang cara meneruskan output skrip Shell ke dalam variabel untuk dikonsumsi oleh tugas lain? Jika demikian, Anda dapat mengubah judul pertanyaan menjadi beberapa seperti "pipa Azure DevOps - meneruskan keluaran skrip Shell ke dalam variabel" untuk lebih membantu orang lain menemukan jawaban.

Pokoknya, coba cara ini:

- 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)" 

Lihat juga dokumen tentang cara menyetel variabel pipeline dalam tugas skrip.
Jika Anda ingin menggunakan variabel dalam pekerjaan lain, maka sintaksnya sedikit berbeda dan didokumentasikan di sini:

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

Anda juga dapat melihat Bagaimana cara menyetel variabel ke output perintah di Bash?.

2
Michaelvsk 10 Maret 2020, 14:33