Я использовал эту простую функцию для многократного подтверждения пользователя в других моих функциях:
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 ', функция должным образом "завершается", однако "return 1" всегда устанавливает статус в 0, и я не могу понять, почему.API рыбы изменился?я неправильно использую его, и мне нужно переписать его?
ОБНОВЛЕНИЕ: Создан отчет об ошибках, так как это регрессия из предыдущих версий https://github.com/fish-shell/fish-shell/issues/5600
Спасибо за помощь, Стефан