我注意到检查全局变量(如PATH,GOPATH等)的常规任务。这就是为什么我要编写小函数而不是输入大量字母
echo $PATH
我可以输入
e PATH
功能本身应该非常简单
function e() {
echo $($1) # it produces the error "command not found"
}
但问题是如何替换变量来获取PATH的内容?
P.S。我使用的是zsh
答案 0 :(得分:3)
处理此问题的传统(POSIX)表示法使用eval
命令,许多人会警告你:
e() {
eval echo \"\$$1\"
}
但是,在bash中,您可以使用变量间接:
function e() {
printf '%s\n' "${!1}"
}
在zsh中,您在我的初始答案之后添加了标签,间接的处理方式不同:
function e() {
printf '%s\n' "${(P)1}"
}
这使用参数扩展标记,您可以在man zshexpn
中阅读。
P This forces the value of the parameter name to be interpreted as a
further parameter name, whose value will be used where appropriate.