我正在運行以下代碼,但如果env.body包含$,它將被轉換為變數。
printf -v markdown_message_unescaped %b "<${{ env.URL }}|*${{ env.body }}*>\n"
jq -n -r --arg text "$markdown_message_unescaped" '{"text": $text}'|curl -X POST -H 'Authorization: Bearer ${{ secrets.TOKEN }}' -H "Content-Type: application/json" -d @- ${{ env.URL }}
我將代碼修改為如下所示以進行轉義$,但如果env.body.
body='${{ env.body }}'
printf -v markdown_message_unescaped %b "<${{ env.URL }}|*$body*>\n"
jq -n -r --arg text "$markdown_message_unescaped" '{"text": $text}'|curl -X POST -H 'Authorization: Bearer ${{ secrets.TOKEN }}' -H "Content-Type: application/json" -d @- ${{ env.URL }}
有沒有什么辦法解決這一問題?
uj5u.com熱心網友回復:
您可以使用heredoc,它將按字面保留所有內容(所選EOF字串除外)。您必須使用 yaml 管道運算子來保留新行,因為heredoc 語法需要它們。
run: |
markdown_msg=$(
cat <<"EOF"
${{ env.body }}
EOF
)
printf -v markdown_msg %b "$markdown_msg"
jq --arg text "$markdown_msg" # etc
bash 看到EOF一行很重要,沒有前導或尾隨空格。yaml 檔案中的縮進將在傳遞給 bash 之前被去除。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/358776.html
標籤:猛击 github-actions
