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.
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
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.