如何执行命令别名,在 zsh 函数中保存为字符串变量?

如何执行命令别名,在 zsh 函数中保存为字符串变量?

我有一个函数

fz(){file=$(find | fzf) && echo $file && read order && $("$order" "$file")}

在我的.zshrz。它允许我在与我调用它的位置相关的子目录中的任何位置查找文件,然后将我的输入指定的命令应用到该文件。

只是存在一个小问题:虽然该函数按预期工作(如果$order不是同一.zshrc文件中指定的别名),但如果我使用任何别名,它会发出“找不到命令”的信息。

有没有办法在 zsh 函数中使用存储为变量的别名?

答案1

您需要使用eval而不是$( … ).这有效:

fz() {
  file=$( find | fzf )
  echo $file
  read order
  eval "$order $file"
}

相关内容