运行 文件夹中所有文件的 zsh 命令

run zsh command for all files in a folder

我有一个 models 文件夹,其中包含多个 sql 文件,例如 models/mart/table1.sqlmodels/mart/table2.sqlmodels/mart/table3.sql

我在终端上手动运行这个命令:

dbt run-operation generate_model_yaml --args '{"model_name": "table1"}'

但是,我不想 运行 为每个 table 单独设置它,而是想将它包含在 Bitbucket 管道中。如何修改命令,使其 运行 循环?它应该能够从指定文件夹中提取所有文件的 table 名称(文件名),例如 (models/mart) 然后 运行 通过用文件名替换 model_name 相应的命令每次?

pipelines:
  custom: 
    dbt-run-default:
          - step:
              name: 'Compile'
              image: fishtownanalytics/dbt:1.0.0
              script:
                - cd dbt_4flow
                - dbt deps --profiles-dir ./profiles

我不确定我是否完全理解您要拆分路径的哪些部分。这个有用吗?

for file in models/mart/*.sql; do
    table=$(basename "$file" .sql)
    model=${file%/*}
    printf " --args '{\"%s\": \"%s\"}'\n" "$model" "$table"
    dbt run-operation generate_model_yaml --args "{\"model_name\": \"$table\"}"
done