繁体   English   中英

如何使用 Bash 将用逗号分隔的字符串拆分为多个字符串

[英]How to split a string that is separated by comma, into multiple strings using Bash

我正在使用 workflow_dispatch 为我的输入数据创建一个 git-hub 工作流

workflow_dispatch:
     inputs:
      Browser:
          description: 'Select what browsers to use'     
          required: true
          default: 'Chrome'

我得到了我的设置工作,我将工作流调度数据传输到 json,所以我可以在我的矩阵中使用它

jobs:
  setup:
    runs-on: ubuntu-latest
    outputs:
      matrix-browser: ${{ steps.set-matrix-browser.outputs.matrix-browser }}
    steps:
    - uses: actions/checkout@v2
    - id: set-matrix-browser
      run: |
        testBro="${{ github.event.inputs.Browser }}"
        echo "::set-output name=matrix-browser::[\"${testBro}\"]"
        echo "[\"${testBro}\"]"

所以,我的问题是:如果我的github.event.inputs.Browser = "Chrome, Safari, Edge"中有两个或多个浏览器,我可以将它们拆分,每个浏览器都是一个单独的字符串。

我希望我的 output 看起来像这样,

[“Chrome”、“Safari”、“Edge”]

但相反我得到了这个

[“铬,Safari,边缘”]

你能建议我如何更改这行代码吗?

echo "::set-output name=matrix-browser::[\"${testBro}\"]"

我试过这样的事情:

echo "::set-output name=matrix-browser::[\"${testBro | tr "," "\n"}\"]"

假设testBro="Chrome,Safari,Edge"
echo [\"$testBro\"] |sed 's/,/\", \"/g'
或整行
echo "::set-output name=matrix-browser:: $(echo [\"$testBro\"] |sed 's/,/\", \"/g')"
给出 output
::set-output name=matrix-browser:: ["Chrome", "Safari", "Edge"]

我想通了

echo "::set-output name=matrix-browser::[\"${testBro//', '/\",\"}\"]"

谢谢大家

我有一个类似的问题,我输入 test1,test2 作为 github 存储库的输入,使用 github 操作工作流输入,并将其存储在.auto.tfvars

echo "repositories = ["${{ github.event.inputs.github-repo }}"]" >./github.auto.tfvars

它以这种格式显示 ["test1, test2"]

我怎样才能像 ["test1", "test2"] 那样实现它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM