首页 > 解决方案 > For 循环 gitlab-ci.yml

问题描述

我有这个代码片段。它给了我语法错误:文件意外结束如果我将它复制到 .sh 文件中并在终端中运行它可以工作。

before_script:
    - sbt sbtVersion
    - for file in ./pending/*.sql; do
        file=$(basename "$file")
        export str_opt="$(cat ./pending/"$file"|tr '\n' ' ')"
        mv ./pending/"$file" ./done/
        done

我哪里错了?

标签: bashshellgitlab-ci

解决方案


do;

没有;do。去掉它。

gitlab-ci 中的 yaml 工作方式,它将行连接成一个长行,用换行符和行前导空格替换单个空格:

for file in ./pending/*.sql; do; file=$(basename "$file"); export str_opt="$(cat ./pending/"$file"|tr '\n' ' ')"; mv ./pending/"$file" ./done/; done

由于;after是无效的do

像这样的脚本:

before_script:
    - sbt sbtVersion
    - for file in ./pending/*.sql; do
             file=$(basename "$file");
             export str_opt="$(cat ./pending/"$file"|tr '\n' ' ')";
             mv ./pending/"$file" ./done/;
        done

应该管用。


推荐阅读