Linux 当alias';它由一个变量调用
我添加了一个别名:Linux 当alias';它由一个变量调用,linux,bash,shell,alias,Linux,Bash,Shell,Alias,我添加了一个别名: $ alias anyalias="echo kallel" 如果我执行: $ anyalias kallel 它执行echo命令时没有任何问题 现在,如果我这样定义一个变量: $ var="anyalias" $ $var -ash: anyalias: not found 然后以这种方式执行: $ var="anyalias" $ $var -ash: anyalias: not found 然后我得到了一个shell错误 如何使$var运行anyalia
$ alias anyalias="echo kallel"
如果我执行:
$ anyalias
kallel
它执行echo
命令时没有任何问题
现在,如果我这样定义一个变量:
$ var="anyalias"
$ $var
-ash: anyalias: not found
然后以这种方式执行:
$ var="anyalias"
$ $var
-ash: anyalias: not found
然后我得到了一个shell错误
如何使$var
运行anyalias
别名中定义的命令
我不想改变调用
$var
的方式。但我正在寻找一种改变别名定义或导出它的方法。 而不是别名,考虑使用函数:
anyfunc() { echo "kallel"; }
v=anyfunc
$v
kallel
更安全的方法是将函数调用存储在数组中(如果需要,还将存储参数):
这是因为别名扩展在参数扩展之前执行:
如您所见,您可以使用
eval
再次完成此过程,即。相反,您可以使用@anubhava的替代方案
例子
再次小心地使用
eval
。这只是为了说明扩展过程。我希望更改别名定义,而不是$var的调用。在这种情况下,只需将函数命名为相同的名称,即anyalias(){echo“kallel”;}
然后相同的var
定义就会起作用。“我希望更改别名定义,而不是$var的调用”。你不能,alias
不是那样工作的。@msw实际上我真正的问题是:我想在调用ls命令时执行一个脚本。因此我添加了一个别名ls:alias ls=“/root/myscript.sh;ls”
。当我直接调用这个别名时,它将被成功地exexute。但是如果我调用wil变量,那么它将不会像我预期的那样执行此问题已被以下问题取代: