你能在 bash 中使用 $'...' 中的变量吗?

你能在 bash 中使用 $'...' 中的变量吗?

我已经尝试过以下方法:

myprogram $'Hello $HOME'

但它不起作用(收到的命令行参数myprogramHello $HOME,而不是 的值$HOME)。

答案1

除了解释 C 风格的反斜杠转义符之外,$'...'其工作方式类似于单引号字符串。至少 Bash 的手册在末尾提到了这一点“ANSI-C 引用”页面:

扩展结果是单引号的,就好像美元符号不存在一样。

所以不行。这可能就是为什么他们选择使用单引号(或相反),尽管我不知道该功能的历史。

您必须使用双引号,并根据需要更改引号。 IE

$ myprogram "Hello $HOME"

或混有制表符

$ myprogram $'Hello\t'"$HOME"

答案2

你必须把它写成

$ myprogram "Hello $HOME"

Bash 将保留双引号内任何内容的字面含义,除了 $,`(反引号) 或 .So Here 它将“Hello”视为值,而 $Hello 将其值保留为变量。

相关内容