有什么办法可以根据旧定义重新定义bash函数?例如,我想将以下代码块添加到函数的序言中command_not_found_handle ()
,
# Check if $1 is instead a bash variable and print value if it is
local VAL=$(eval echo \"\$$1\")
if [ -n "$VAL" ] && [ $# -eq 1 ]; then
echo "$1=$VAL"
return $?
fi
它当前在/etc/profile.d/PackageKit.sh中定义,并由bash启动脚本提供。
这样,我可以在命令提示符处通过简单地键入变量名称来查询环境变量的值(并且前提是不存在该名称的此类命令)。例如
user@hostname ~:$ LANG
LANG=en_AU.utf8
我知道我可以复制并粘贴当前定义,然后在中添加自己的更改~/.bashrc
,但是我正在寻找一种涉及代码重用的更优雅的方法。
也赞赏实现我的目标或代码改进/扩展的更好方法。
如果这个问题更适合stackoverflow,有人可以将其迁移过来,我不知道如何。
—
tmoschou 2012年
我认为有关Stack Overflow的帖子回答了您的问题。
—
2012年
代替
—
已暂停,直到另行通知。
eval
,您可以使用间接方式:local VAL=$(echo ${!1})