运行这些命令:
[$] echo 'export VAR="qwertyuiop"
export VAR="$VAR:asdf=ghjkl"' > /tmp/vars.sh
[$] source /tmp/vars.sh
[$] echo $VAR
/home/saga/qwertyuiopsdf=ghjkl
正如您所看到的,变量替换没有达到我们的预期。这里有什么问题呢?
答案1
冒号在 中充当修饰符zsh
。引用这个参考,
在可选字指示符之后,您可以添加一系列一个或多个以下修饰符,每个修饰符前面都有一个“:”。除非另有说明,这些修饰符也适用于文件名生成和参数扩展的结果。
A
将文件名转换为绝对路径:如有必要,在当前目录前面添加(...)
总而言之,它:a
充当修饰符并将当前目录添加到VAR
扩展值之前。
为了防止修饰符起作用,请将变量括在花括号中:VAR="${VAR}:asdf=ghjkl"
。