【问题标题】:fish won't return specified status code from function with "return"鱼不会从带有“return”的函数返回指定的状态代码
【发布时间】:2019-01-29 14:53:20
【问题描述】:

我在其他功能中使用这个简单的功能来进行可重复使用的用户确认:

function read_confirm --description 'Ask the user for confirmation' --argument prompt
    if test -z "$prompt"
        set prompt "Do you want to continue? [Y/n]: "
    end 

    while true
        read -l -P $prompt confirm
        switch $confirm
        case N n
            return 1
        case '' Y y
            return 0
        end
    end
end

这在以前的版本中运行良好,但是现在当我安装版本 3.0.0 时,我似乎总是得到状态码 0。

 ~ read_confirm
Do you want to continue? [Y/n]:
 ~ echo $status
0
 ~ read_confirm
Do you want to continue? [Y/n]: y
 ~ echo $status
0
 ~ read_confirm
Do you want to continue? [Y/n]: Y
 ~ echo $status
0
 ~ read_confirm
Do you want to continue? [Y/n]: n
 ~ echo $status
0
 ~ read_confirm
Do you want to continue? [Y/n]: N
 ~ echo $status
0
 ~

起初我以为 case 语句不起作用,但是正确读取了用户输入,它没有前导 '\n',它会转到 'N n' 大小写,函数将正确“完成” ,但是“返回 1”总是将状态设置为 0,我不知道为什么。鱼 API 改变了吗?我只是用错了,需要重写吗?

更新: 创建了一个错误报告,因为这是对以前版本的回归 https://github.com/fish-shell/fish-shell/issues/5600

感谢您的帮助, 斯蒂芬

【问题讨论】:

    标签: scripting fish


    【解决方案1】:

    这是一个已知的错误,将在下一个 dot 版本中修复。见https://github.com/fish-shell/fish-shell/issues/5513

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 2012-01-02
      • 2017-07-10
      • 1970-01-01
      相关资源
      最近更新 更多