将 bash 函数的结果与 bash 命令一起使用

将 bash 函数的结果与 bash 命令一起使用

我创建了一个名为的 bash 函数get

get() {
    $(fd -H | fzf)
}

fd就像find,它将找到的所有文件通过管道传输到fzf模糊查找器中,这使我可以找到文件。

我希望能够使用get各种命令,例如echoor ls,但我无法“让它”工作(请原谅双关语),例如

# I am in home dir, and the result from get is 'Documents'
$ ls $(get)
Documents: command not found

$ ls `get`
Documents: command not found

$ echo get | ls
# Just performs ls on current dir not result from get

$ ls get
ls: cannot access 'get': No such file or directory


不知道如何使用我制作的函数,文字不起作用,评估不起作用,管道不起作用,我没有技巧,所以我将问题传递给SO。

答案1

包含在$(不是您想要的:它将尝试使用该管道的输出运行命令。只需删除命令替换即可正常工作:

get() {
    fd -H | fzf
}

然后您可以照常传递给其他命令:

foo "$(get)"

或者,如果您依赖分词:

foo $(get)

顺便说一句,由于文件名可以包含换行符,因此您真正想要的是:

get() {
    fd -0 -H | fzf --read0
}

相关内容