Как завершить выполнение скрипта fish из исходного файла?

#shell #fish

#оболочка #fish

Вопрос:

exit Команда, выполняемая из исходного файла, не завершает выполнение программы, из которой она была получена, как это сделать? Рассмотрите эти файлы для более четкого объяснения:

a.fish:

 source b.fish
echo "This should never run!"
  

b.fish:

 echo "Failing now"
exit 1
  

Это приведет к этому (нежелательному выводу):

 Failing now
This should never run!
  

И статус выхода равен 0! Есть ли решение для B прекратить выполнение A, как если exit бы оно было написано в самом A?

Ответ №1:

Он отлично работает так, как вы хотите, с bash and zsh . Тем не менее, я нашел решение для fish :

 source b.fish; or exit 1
  

Это завершится a.fish , если b.fish завершится с exit 1 помощью, и продолжится в противном случае.

Комментарии:

1. не думал об этом, отлично. Чтобы повторить код выхода, вы можете изменить exit 1 на exit $status