Fish Shell 从命令替换中返回状态代码
Fish Shell returning status code from within command substitution
我有一个像这样工作的小辅助函数:
function select_item
set -e selected_item
set -g selected_item (for i in $argv; echo $i; end | fzf)
end
此函数随后在其他地方用于启动编辑器或其他任何东西。
我想做的是,如果我在 fzf
中按下转义键,则中止所有操作,并将错误状态代码(来自 fzf
)传递给调用客户端功能,所以他们也可以中止。但是,我认为从函数 select_item
返回的状态代码来自最终 set
命令的成功或失败,而不是来自 fzf
.[=18= 的最后一个操作。 ]
有没有一种干净的方法来获取 fzf
的状态代码,同时保留这个基于管道的漂亮代码结构?
$status 将包含 fzf 未设置的状态:
$ set output (date; false)
$ printf "%s\n" $status $output
1
Tue Aug 4 18:43:22 EDT 2020
您可以使用 printf 代替 for 循环来添加换行符:
function select_item
set -e selected_item
set -g selected_item (printf "%s\n" $argv | fzf)
return $status
end
我有一个像这样工作的小辅助函数:
function select_item
set -e selected_item
set -g selected_item (for i in $argv; echo $i; end | fzf)
end
此函数随后在其他地方用于启动编辑器或其他任何东西。
我想做的是,如果我在 fzf
中按下转义键,则中止所有操作,并将错误状态代码(来自 fzf
)传递给调用客户端功能,所以他们也可以中止。但是,我认为从函数 select_item
返回的状态代码来自最终 set
命令的成功或失败,而不是来自 fzf
.[=18= 的最后一个操作。 ]
有没有一种干净的方法来获取 fzf
的状态代码,同时保留这个基于管道的漂亮代码结构?
$status 将包含 fzf 未设置的状态:
$ set output (date; false)
$ printf "%s\n" $status $output
1
Tue Aug 4 18:43:22 EDT 2020
您可以使用 printf 代替 for 循环来添加换行符:
function select_item
set -e selected_item
set -g selected_item (printf "%s\n" $argv | fzf)
return $status
end