当变量调用时,我如何调用别名

时间:2014-11-28 14:48:40

标签: linux bash shell alias

我添加了别名:

$ alias anyalias="echo kallel"

如果我执行:

$ anyalias
kallel

它执行echo命令没有任何问题。

现在,如果我以这种方式定义变量:

$ var="anyalias"

然后以这种方式执行:

$  $var
-ash: anyalias: not found

然后我收到了一个shell错误。

如何让$var运行anyalias别名中定义的命令?

我不打算改变调用$var的方式。但我正在寻找一种改变别名定义或导出别名的方法。

2 个答案:

答案 0 :(得分:6)

而不是别名考虑使用函数:

anyfunc() { echo "kallel"; }
v=anyfunc
$v
kallel

更安全的是将函数调用存储在数组中(如果需要,还将存储参数):

var=(anyfunc)
"${var[@]}"
kallel

答案 1 :(得分:2)

这是因为别名扩展是在参数展开之前执行的:
Command-line Processing

enter image description here

如您所见,您可以使用eval $ alias anyalias="echo kallel" $ var=anyalias $ $var bash: anyalias: command not found $ eval $var kallel 再次完成此过程。 相反,你可以使用@anubhava作为一个替代品。


实施例

eval

再次,仔细使用{{1}}。它只是为了说明扩展过程。