0

我想在源 Bash 脚本的函数中创建并使用别名。我遇到了类似 Inception 的困难,我希望得到有关如何正确执行此操作的指示。

这是一个示例脚本来源:

#!/bin/bash

myFunction(){
    alias zappo="echo"
    zappo
}


有什么建议吗?

4

1 回答 1

2

请注意,别名将具有有限的脚本功能。来自高级 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"
于 2013-07-10T10:34:04.183 回答