web-dev-qa-db-fra.com

Définir la variable de sortie VSTS comme étant le résultat de la commande bash

J'exécute une tâche dans VSTS qui effectue certaines opérations sur une variable d'une étape précédente et je dois ensuite générer le résultat à utiliser dans les tâches futures. J'ai les éléments suivants dans une tâche de ligne de commande exécutée sur un hôte de compilation linux, mais je n'ai aucune chance d'essayer d'utiliser le résultat ultérieurement avec $ (podName3).

COMMAND="$(echo '$(pods)' | grep -oh -P '[^ ]*' | grep schema)"
##vso[task.setvariable variable=podName3]"$COMMAND"

J'ai essayé plusieurs variantes à ce sujet en vain et j'ai besoin d'une direction, car cela me laisse perplexe depuis trop longtemps maintenant.

4
David Parsonson

Semble la syntaxe est incorrecte.

Essayez juste de mettre en forme ci-dessous:

COMMAND="$(echo '$pods' | grep -oh -P '[^ ]*' | grep schema)"
echo "##vso[task.setvariable variable=podName3]$COMMAND"

Ou ajoutez une tâche powershell et exécutez les commandes ci-dessous pour définir la variable:

$COMMAND="$(echo '$env:pods' | grep -oh -P '[^ ]*' | grep schema)"

Write-Host "##vso[task.setvariable variable=podName3]$COMMAND"

Plus d'informations s'il vous plaît voir Définir et modifier vos variables dans un script

9
Andy Li-MSFT

J'ai créé un outil de ligne de commande et une tâche Azure DevOps pour cela: https://marketplace.visualstudio.com/items?itemName=riezebosch.setvar

Il vous permet simplement de canaliser la sortie d'une commande dans l'outil et de la sortir en tant que chaîne de variable magique. Il est écrit dans Go and cross compilé, il fonctionne donc sur toutes les plates-formes principales et tous les différents shells.

Votre exemple:

echo '$pods' | grep -oh -P '[^ ]*' | grep schema | setvar -name podName3

Vous devez uniquement inclure la tâche setvar avant cette tâche de script afin d'obtenir l'outil sur l'agent.

0
riezebosch