如何消除GitHub Actions环境变量中的换行符?
修复GitHub Actions环境变量导致的ARN换行问题
问题原因
你用YAML的>折叠语法定义INFRA_ACCOUNT时,块内的换行和缩进会被保留为空白字符,最终导致INFRA_ACCOUNT的值末尾带有换行符,拼接ARN时就出现了换行拆分的情况。
解决方法
方法1:将JSON内联写成一行,移除折叠语法
直接把fromJson里的JSON结构压缩成一行,避免YAML块引入额外换行:
jobs: deploy_infra: name: Deploy Infra env: INFRA_ACCOUNT: ${{ fromJson('{"dev": "12345", "preprd": "678234", "prd": "91056"}')[github.event.inputs.stage] }} steps: - name: Creating ARN shell: bash run: | echo "ARN is arn:aws:iam::${{ env.INFRA_ACCOUNT }}:role/aws-github-role"
方法2:用trim函数去除空白字符
如果想保留JSON的多行格式,在表达式中添加trim函数,自动去除值的首尾空白(包括换行):
jobs: deploy_infra: name: Deploy Infra env: INFRA_ACCOUNT: ${{ trim(fromJson('{ "dev": "12345", "preprd": "678234", "prd": "91056" }')[github.event.inputs.stage]) }} steps: - name: Creating ARN shell: bash run: | echo "ARN is arn:aws:iam::${{ env.INFRA_ACCOUNT }}:role/aws-github-role"
方法3:在Shell命令中去除换行
如果不想修改环境变量定义,也可以在run命令里用tr命令删除换行符:
jobs: deploy_infra: name: Deploy Infra env: INFRA_ACCOUNT: > ${{ fromJson('{ "dev": "12345", "preprd": "678234", "prd": "91056" }')[github.event.inputs.stage] }} steps: - name: Creating ARN shell: bash run: | echo "ARN is arn:aws:iam::${{ env.INFRA_ACCOUNT }}:role/aws-github-role" | tr -d '\n'
内容的提问来源于stack exchange,提问作者change198
相关产品推荐
相关产品推荐

