user267935 Asked: 2018-01-04 06:07:56 +0800 CST2018-01-04 06:07:56 +0800 CST 2018-01-04 06:07:56 +0800 CST 你可以在 bash 中使用 $'...' 中的变量吗? 772 我尝试了以下方法: myprogram $'Hello $HOME' 但它不起作用(接收的命令行参数myprogram是Hello $HOME,而不是值$HOME)。 bash quoting 2 个回答 Voted Best Answer ilkkachu 2018-01-04T06:15:51+08:002018-01-04T06:15:51+08:00 除了解释 C 风格的反斜杠转义外,$'...'它的工作方式类似于单引号字符串。至少 Bash 的手册在“ANSI-C 引用”页面的末尾提到了这一点: 扩展的结果是单引号的,就好像美元符号不存在一样。 所以不行。这可能就是他们选择使用单引号(或相反)的原因,尽管我不知道该功能的历史。 您必须使用双引号,并根据需要更改引号。IE $ myprogram "Hello $HOME" 或混入标签 $ myprogram $'Hello\t'"$HOME" Akhil Sharma 2018-01-04T06:39:34+08:002018-01-04T06:39:34+08:00 你必须把它写成 $ myprogram "Hello $HOME" Bash 将保留包含在双引号中的任何内容的字面含义,除了 $,`(back-tick) 或 . 所以这里它认为 "Hello" 作为值,而 $Hello 将其值保留为变量。
除了解释 C 风格的反斜杠转义外,
$'...'
它的工作方式类似于单引号字符串。至少 Bash 的手册在“ANSI-C 引用”页面的末尾提到了这一点:所以不行。这可能就是他们选择使用单引号(或相反)的原因,尽管我不知道该功能的历史。
您必须使用双引号,并根据需要更改引号。IE
或混入标签
你必须把它写成
Bash 将保留包含在双引号中的任何内容的字面含义,除了 $,`(back-tick) 或 . 所以这里它认为 "Hello" 作为值,而 $Hello 将其值保留为变量。