如何处理包含所有 3 种引号的字符串?("", '', ``)?

How do I handle a string that has all 3 type of quotes? ("", '', ``)?

提问人:torwent 提问时间:1/2/2023 最后编辑:oguz ismailtorwent 更新时间:1/2/2023 访问量:113

问:

我知道您通常会逃避引号,但在这种情况下这不是一种选择。

这个问题在我尝试使用的 GitHub Action 中发生在我身上:它有时包含所有类型的引号,并且由于这个原因,字符串的某些部分被尝试作为命令运行。${{ github.event.workflow_run.head_commit.message }}

因此,如果尝试类似 : 并且字符串中有 ,它很有可能会破坏命令。 我能做些什么?echo "${{ github.event.workflow_run.head_commit.message }}" >> tmp.txt""

我试过:

echo "${{ github.event.workflow_run.head_commit.message }}" >> tmp.txt
echo '${{ github.event.workflow_run.head_commit.message }}' >> tmp.txt
echo `${{ github.event.workflow_run.head_commit.message }}` >> tmp.txt
echo `"'${{ github.event.workflow_run.head_commit.message }}'"` >> tmp.txt
echo ${{ github.event.workflow_run.head_commit.message }} >> tmp.txt
echo \'${{ github.event.workflow_run.head_commit.message }}\' >> tmp.txt

我希望该命令成功运行并将变量内容保存到 tmp.txt

bash 转义 github-actions 引号

评论

0赞 Nic3500 1/2/2023
发布消息的样本,以便我们可以尝试。

答:

1赞 oguz ismail 1/2/2023 #1

您可以使用 here-document

cat <<'EOF' >>tmp.txt
${{ github.event.workflow_run.head_commit.message }}
EOF

对于第一个引号,shell 不会解释或修改此处文档正文,它将被逐字附加。EOFtmp.txt