我已经尝试过以下方法:
myprogram $'Hello $HOME'
但它不起作用(收到的命令行参数myprogram
是Hello $HOME
,而不是 的值$HOME
)。
答案1
除了解释 C 风格的反斜杠转义符之外,$'...'
其工作方式类似于单引号字符串。至少 Bash 的手册在末尾提到了这一点“ANSI-C 引用”页面:
扩展结果是单引号的,就好像美元符号不存在一样。
所以不行。这可能就是为什么他们选择使用单引号(或相反),尽管我不知道该功能的历史。
您必须使用双引号,并根据需要更改引号。 IE
$ myprogram "Hello $HOME"
或混有制表符
$ myprogram $'Hello\t'"$HOME"
答案2
你必须把它写成
$ myprogram "Hello $HOME"
Bash 将保留双引号内任何内容的字面含义,除了 $,`(反引号) 或 .So Here 它将“Hello”视为值,而 $Hello 将其值保留为变量。