web-dev-qa-db-ja.com

VSTS出力変数をbashコマンドの結果に設定する

前のステップの変数に対していくつかの操作を実行するVSTSでタスクを実行しているので、将来のタスクで使用される結果を出力する必要があります。 Linuxビルドホストで実行しているコマンドラインタスクに次のものがありますが、後で$(podName3)で結果を使用しようとすると、運がありません。

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

私はこれについていくつかのバリエーションを試してみましたが、これはあまりにも長い間私を困惑させていたので、いくつかの指示が必要です

8
David Parsonson

構文が間違っているようです。

以下のフォーマットを試してください:

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

または、powershellタスクを追加し、以下のコマンドを実行して変数を設定します。

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

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

詳細については、 スクリプトで変数を定義および変更する を参照してください

11
Andy Li-MSFT

コマンドラインツールとこのためのAzure DevOpsタスクを作成しました: https://marketplace.visualstudio.com/items?itemName=riezebosch.setvar

コマンドの出力をツールにパイプして、魔法の変数文字列として出力するだけです。 Goで記述され、クロスコンパイルされているため、すべての主要なプラットフォームとすべての異なるシェルで動作します。

あなたの例:

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

エージェントでツールを取得するには、このスクリプトタスクの前にsetvarタスクのみを含める必要があります。

0
riezebosch