ZSH自定义功能,如重复

凯恩

我有一个命令,当发生特定错误时,我想重复该命令。为了使这个泛型成为可能,我想提出一个函数,该函数可以采用任何其他函数来基本包装该行为,这与repeatZSH中的非常相似

所以我想要的是这样的:

repeatWhenError { someFunction() }

这将在花括号内重复该功能,直到成功执行为止。有没有在ZSH中实现此目标的简便方法?

笑脸

从我的dotfiles中

retry () {
    retry-limited 0 "$@"
}
retry-limited () {
    retry-limited-eval "$1" "$(gquote "${@:2}")"
}
retry-limited-eval () {
    local retry_sleep="${retry_sleep:-0.1}"
    local limit=0
    local ecode=0
    until {
            test "$1" -gt 0 && test $limit -ge "$1"
        } || {
            eval "${@:2}" && ecode=0
        }
    do
        ecode="$?"
        ecerr Tried eval "${@:2}" "..."
        sleep $retry_sleep
        limit=$((limit+1))
    done
    return "$ecode"
}
gquote () {
    \noglob : Use this to control quoting centrally.
    print -r -- "${(q+@)@}"
}
ecerr () {
    print -r -- "$@" >&2
}

用法:

retry someFunction

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Prezto ZSH中自定义git功能的完成

来自分类Dev

自定义功能

来自分类Dev

自定义查找功能

来自分类Dev

等待自定义功能

来自分类Dev

Mybatis自定义功能

来自分类Dev

Sympy自定义功能

来自分类Dev

Jmeter自定义功能

来自分类Dev

自定义查找功能

来自分类Dev

自定义指标功能

来自分类Dev

自定义功能中断

来自分类Dev

如何自定义zsh的vim模式?

来自分类Dev

使用自定义zshrc启动zsh

来自分类Dev

ZSH中的自定义命令

来自分类Dev

自定义脚本的 zsh 完成

来自分类Dev

如何在zsh中为自定义完成功能的路径添加自动完成功能?

来自分类Dev

如何通过自定义功能对列表进行排序,并丢弃重复项?

来自分类Dev

如何使用自定义的重复判断功能进行设置?

来自分类Dev

自定义tableview滚动效果,如Google入门

来自分类Dev

Sass-创建自定义控制指令(如@if或@for)

来自分类Dev

自定义Google Maps叠加层,如迪士尼地图

来自分类Dev

自定义链接前缀如何工作?(如Steam://)

来自分类Dev

进度栏自定义设计,如instagram

来自分类Dev

Android的绘制自定义视图,如谷歌付费

来自分类Dev

Andrioid抽屉菜单,如clickListener上的自定义菜单

来自分类Dev

自定义对话框,如视图

来自分类Dev

添加自定义 Eclipse 完成,如 sysout

来自分类Dev

NSSet中重复的自定义对象

来自分类Dev

删除重复的ArrayList自定义对象

来自分类Dev

在布局中重复自定义视图