GitHub Actions中如何将环境变量设为计算后的值而非表达式
解决GitHub Actions环境变量无法执行Shell命令的问题
你遇到的问题是因为GitHub Actions的env字段仅支持静态字符串赋值,不会自动解析并执行其中的Shell命令,所以rundate被直接当作字符串$(date --date="2 days ago" '+%Y%m%d')使用,而非计算后的日期值。
解决方法是通过run步骤结合$GITHUB_ENV文件来动态设置环境变量,具体步骤如下:
- 在工作流中添加一个专门设置环境变量的步骤,通过Shell命令计算日期并写入
$GITHUB_ENV:
- name: Set rundate variable run: echo "rundate=$(date --date='2 days ago' '+%Y%m%d')" >> $GITHUB_ENV
- 后续步骤中直接使用
${{ env.rundate }}即可获取计算后的日期值:
- name: Download BQ data from previous job uses: actions/download-artifact@v2 with: name: bq-data path: _${{ env.rundate }}data.tsv
这样配置后,rundate会被设置为两天前的日期字符串(如20220721),路径也会变成预期的_20220721data.tsv。
内容的提问来源于stack exchange,提问作者Doug Fir
相关产品推荐
相关产品推荐

