【问题标题】:Fish how to prevent recursive function callsFish如何防止递归函数调用
【发布时间】:2021-07-02 10:49:19
【问题描述】:

在使用同名函数覆盖默认二进制文件时,如何防止对鱼函数的递归函数调用?

例如。

# Override 'ls'
function ls
    if [ my_special_condition ]
        * Do special stuff *
    else  # Call regular ls
        ls $argv
    end    
end

显然,上面的代码最终进入了一个递归循环,而没有调用实际的“ls”二进制文件。 有没有办法解决这个问题?

【问题讨论】:

    标签: fish


    【解决方案1】:

    在函数内,使用the command command

    function ls
        command ls $argv
    end
    

    【讨论】:

    • 我希望有一种方法仍然保留命令的默认鱼版本(语法突出显示等),但这也有效。谢谢!
    【解决方案2】:

    我了解到您希望替换 ls 函数,同时还能够调用原始函数。你可以通过functions -c复制函数来做到这一点:

    functions -c ls orig_ls # copies ls to orig_ls
    function ls
        if [ my_special_condition ]
            * Do special stuff *
        else  # Call original ls
            orig_ls $argv
        end    
    end
    

    【讨论】:

    • 正是我想要的!谢谢
    猜你喜欢
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2018-09-20
    • 1970-01-01
    相关资源
    最近更新 更多