我想在源 Bash 脚本的函数中创建并使用别名。我遇到了类似 Inception 的困难,我希望得到有关如何正确执行此操作的指示。
这是一个示例脚本来源:
#!/bin/bash
myFunction(){
alias zappo="echo"
zappo
}
有什么建议吗?
请注意,别名将具有有限的脚本功能。来自高级 Bash 脚本指南:
在脚本中,别名的用处非常有限。如果别名可以承担 C 预处理器的某些功能(例如宏扩展),那就太好了,但不幸的是,Bash 不会在别名主体内扩展参数。[2] 此外,脚本无法在“复合结构”中扩展别名本身,例如 if/then 语句、循环和函数。另一个限制是别名不会递归扩展。几乎总是,我们想让别名做的任何事情都可以通过函数更有效地完成。
我会为此使用一个变量:
myFunction(){
zappo="echo"
$zappo "foo bar"
}
甚至是包装函数:
zappo() {
if [ $1 = 'some value'] ; then
do something
fi
# apply out arguments to echo
echo $@
}
现在这样称呼它:
zappo log_info "foo bar"