String Bash脚本传递的字符串参数包含$

String Bash脚本传递的字符串参数包含$,string,bash,argument-passing,String,Bash,Argument Passing,我需要将一个字符串参数传递给可能包含$字符的bash脚本。我不想强制将\插入脚本外部的字符串中 我试图在脚本中这样做,但不知道如何做到这一点 在后来的脚本中,我遇到了类似的问题,我使用“read”读取字符串。我只能通过强制用户输入\$来让它工作,这对我的应用程序不起作用 有什么建议吗?如果您不想用反斜杠转义$,那么唯一的替代方法是将参数括在单引号中。无法将“裸”的$传递到脚本中,因为shell将尝试展开它。使用单引号可以防止shell扩展并保留$ 例如: myscript.sh '$foo'

我需要将一个字符串参数传递给可能包含$字符的bash脚本。我不想强制将\插入脚本外部的字符串中

我试图在脚本中这样做,但不知道如何做到这一点

在后来的脚本中,我遇到了类似的问题,我使用“read”读取字符串。我只能通过强制用户输入\$来让它工作,这对我的应用程序不起作用


有什么建议吗?

如果您不想用反斜杠转义
$
,那么唯一的替代方法是将参数括在单引号中。无法将“裸”的
$
传递到脚本中,因为shell将尝试展开它。使用单引号可以防止shell扩展并保留
$

例如:

myscript.sh '$foo'

请解释或给出一些示例,说明如何运行
yourscript.sh
,参数是如何传递的,以及是哪种形式。只是澄清一下:“不可能传递裸$,因为shell将扩展它”实际上意味着父shell(您运行脚本并提供参数的地方)将进行扩展。您的脚本(在单独的shell中运行,可能与父shell不同)将永远看不到$args。感谢您的反馈。因此,要使用这种技术,我想我应该在另一种不会扩展$的shell类型中编写一个小的父脚本,然后在我的字符串周围使用“chars”调用我的bash脚本。我要试一试。