gpt4 book ai didi

bash - 如何在 bash 中转义反引号

转载 作者:行者123 更新时间:2023-12-04 01:30:40 25 4
gpt4 key购买 nike

我试图在 bash 中长时间逃避反引号。
我尝试用\转义,但它不起作用。

是否有可能在 bash 中转义反引号?

示例代码

I="hello.pdf"

var1=`cat <<EOL
![](../images/${I%.*}.png)
\`\`\`sql
some code here

\`\`\`

EOL`

echo "$var1"


所需的输出
![](../images/hello.png)
```sql
some code here

```

最佳答案

使用 $(...)而不是外部命令替换的反引号语法。因此:

I='foo.png'
var1=$(cat <<EOL
![](../images/${I%.*}.png)
\`\`\`sql
some code here

\`\`\`
EOL
)
echo "$var1"

https://ideone.com/nbOrIu 看到这个正在运行并发出您想要的输出

否则,您需要更多反斜杠:
I='foo.png'
var1=`cat <<EOL
![](../images/${I%.*}.png)
\\\`\\\`\\\`sql
some code here

\\\`\\\`\\\`
EOL
`
echo "$var1"

...如果你要在反引号内嵌套反引号,你需要再次乘以反斜杠。对基于反引号的命令替换说不。

顺便说一句,您可能会考虑完全避免这个问题:
I='foo.png'
fence='```'
var1=$(cat <<EOL
![](../images/${I%.*}.png)
${fence}sql
some code here

${fence}
EOL
)
echo "$var1"

...将文字反引号放在变量中意味着您不再需要任何类型的转义来防止它们被视为语法。

关于bash - 如何在 bash 中转义反引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61087875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com