#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