如何防止 bash $ 替换?

如何防止 bash $ 替换?

我试图保留下面的 $if 并
希望下面输出
$if


bash 通过执行$ 替换 来妨碍

$ sed -e 's:\\$:\\$:g' <<ENDOFFILE  
> $if  
> ENDOFFILE  

或者

$ tr '$' '\$' <<ENDOFFILE  
> $if  
> ENDOFFILE  

有没有办法将 $keywords 保存
到 stdout,而不
在 stdin 中明确地将它们转义?

在尝试此操作之前我应该​​切换到另一个 shell 吗?

答案1

我不确定您要做什么,但是 bash 正在此处的文档中执行参数扩展,因为分隔符ENDOFFILE。如果将其更改为'ENDOFFILE'bash,则不会扩展。

答案2

不确定您在这里到底想做什么,但您可以使用 tr 和 $ 的八进制值 044。尝试一下:

回声'ab$de'| tr \\044 C

相关内容