Lav*_*vya 22 shell bash quoting
在标题为双引号的 3.1.2.3 节中,Bash 手册说:
用双引号 ('"') 将字符括起来会保留引号内所有字符的字面值,但 '$'、'`'、'\' 和启用历史扩展时的 '!' 除外。
目前我关心的是单引号( '
)。
它的特殊含义,在上一节中描述,3.1.2.2节是:
将字符括在单引号 (
'
) 中会保留引号内每个字符的字面值。单引号之间不能出现单引号,即使前面有反斜杠。
结合两场展览,
echo "'$a'"
Run Code Online (Sandbox Code Playgroud)
其中变量a
未定义(因此$a
= 空字符串),应该打印$a
在屏幕上,因为''
,在内部具有特殊含义,将屏蔽$
特殊解释。相反,它打印''
. 为什么这样?
Ant*_*hon 24
'
您的echo
示例中的单引号字符获取它的字面值(并失去其含义),因为它包含在双引号 ( "
) 中。封闭字符是双引号。
您可以做的是单独打印单引号:
echo "'"'$a'"'"
Run Code Online (Sandbox Code Playgroud)
或逃避$
:
echo "'\$a'"
Run Code Online (Sandbox Code Playgroud)
你误解了文档:
在里面有它的特殊含义,将保护 $ 免受特殊解释
“有其特殊意义”意味着它被特别解释而不是按字面意思解释。单引号防止$
被扩展。但是双引号中的单引号是文字字符,即它们不影响任何东西。如果你想要输出,$a
那么你需要echo '$a'
.
归档时间: |
|
查看次数: |
53087 次 |
最近记录: |