用shell脚本澄清

时间:2014-03-25 04:10:48

标签: shell

如果echo "${PWD/#$HOME/~}"评估为~,有人可以解释PWD如何打印$HOME。从不使用echo读取此类替换。这是怎么回事?

1 个答案:

答案 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>