如果echo "${PWD/#$HOME/~}"
评估为~
,有人可以解释PWD
如何打印$HOME
。从不使用echo读取此类替换。这是怎么回事?
答案 0 :(得分:1)
不是echo
它是你的shell Parameter Expansion using ${parameter/pattern/string}
syntax:
扩展
pattern
以生成与文件名一样的模式 扩张。参数被扩展并且模式的最长匹配 反对其值被替换为字符串。如果模式以‘/’
开头, 模式的所有匹配都用字符串替换。通常只有 第一场比赛被替换。如果模式以‘#’
开头,则必须匹配 参数扩展值的开头。如果模式开始 使用‘%’
时,它必须在参数的扩展值的末尾匹配。 如果string为null,则删除pattern的匹配项和/ following 模式可以省略。如果参数为‘@’
或‘*’
,则为替换 操作依次应用于每个位置参数,并且 扩展是结果列表。如果参数是数组变量 使用‘@’
或‘*’
下标,替换操作适用于 依次是数组的每个成员,并且扩展是结果 列表。
doesn't look like POSIX supports it。
在您的情况下,如果$HOME
envvar以它开头,它会在输出中用'$HOME'
替换~
envvar(不是字符串PWD
字面意思)的值。< / p>