ZSH Shell:来自函数参数的可执行别名

3hvapo4f  于 2023-04-21  发布在  Shell
关注(0)|答案(1)|浏览(107)

我试图执行一个别名,这个别名是通过函数上的参数给出的。但是我不能执行这个别名。我也找不到解决方案。有人对这种情况有想法吗?
这是可行的:

alias rabbitmq='cd xy/_infra/v2/rabbitmq'

test () {
    echo "run alias"
    rabbitmq
}

这行不通:

alias rabbitmq='cd xy/_infra/v2/rabbitmq'

runAlias () {
    local aliasCmd=$1

    echo "run alias $aliasCmd"
    $aliasCmd
}

test () {
    runAlias rabbitmq
}

输出如下:

run alias rabbitmq
runAlias:4: command not found: rabbitmq

我试着用引号、括号和函数${BASH_ALIASES[$alias_key]}来使用它,但没有任何帮助。
我想执行的别名是由参数给一个函数。

6ovsh4lw

6ovsh4lw1#

别名扩展是在参数扩展之前完成的。如果你真的别名被理解,你必须这样做

eval "$aliasCmd"

但我更建议重新设计代码,这样就不需要将别名传递给函数。

相关问题