小编cyb*_*989的帖子

尝试使用 bash 从文件名中提取子字符串和版本号

我目前正在尝试使用 bash 从文件名中提取子字符串和版本号。

文件名有两种格式:

example-substring-1.1.0.tgz
example-substring-1.1.0-branch-name.tgz
Run Code Online (Sandbox Code Playgroud)

对于第一个场景,我能够使用 sed 提取版本号,如下所示:

echo example-substring-1.1.0.tgz | sed "s/.*-\(.*\)\.[a-zA-Z0-9]\{3\}$/\1/"
Run Code Online (Sandbox Code Playgroud)

然而,这不适用于第二种情况。

最终我想创建一个脚本,将第一个子字符串和版本存储在关联数组中,如下所示。

example_array["example-substring"]="1.1.0"
example_array["example-substring"]="1.1.0-branch-name"
Run Code Online (Sandbox Code Playgroud)

然而,这被证明很棘手,因为我似乎找不到适合这两种情况的好方法。对于版本包含分支名称的情况,我事先无法知道分支名称将包含多少个单词。

我认为变量扩展可能是可行的方法,但无法让它输出我想要的内容。

bash perl awk sed

7
推荐指数
2
解决办法
201
查看次数

Github 操作矩阵包括基于 GitHub 事件有条件的条目

我目前有一个工作流程,可以在合并到 master 时触发部署,并确保开发作业在部署产品之前通过。总共有 4 个环境(2 个 dev 和 2 个 prod),如果可能的话,我希望能够减少代码重复并将作业数量减少到 1 个,因为作业之间唯一改变的是环境变量。

我遇到的问题是似乎没有办法根据 github 事件有条件地包含或排除条目。如果有人提供意见或知道一个好的解决方法,我将非常感激。

文件和内容如下。

应用.yaml:

name: Terraform Apply

on:
  deployment:
  workflow_dispatch:
    inputs:
      environment:
        description: "name of the environment"
        required: true
        default: "dev"

env:
  AWS_ACCESS_KEY_ID: ${{ secrets.KEY_ID_EXAMPLE }}
  AWS_SECRET_KEY: ${{ secrets.KEY_EXAMPLE }}

jobs:
  deploy-dev:
    name: TF Apply - Dev
    runs-on: ubuntu-latest
    if: ${{ github.event.deployment.environment == 'dev' || github.event.deployment.environment == 'all' || github.event.inputs.environment == 'dev' || github.event.inputs.environment == 'all' }}
    env:
      TF_VAR_aws_provider_role_arn: arn:example
      TF_VAR_example_api_key: ${{ secrets.EXAMPLE_API_KEY }}
      TF_VAR_example_app_key: ${{ …
Run Code Online (Sandbox Code Playgroud)

yaml github-actions

5
推荐指数
1
解决办法
3571
查看次数

标签 统计

awk ×1

bash ×1

github-actions ×1

perl ×1

sed ×1

yaml ×1