Есть ли общий способ в сценарии bash «попробовать» что-то, но продолжить, если он не сработает? Аналог на других языках будет обертывать его в try/catch и игнорировать исключение.Выполнить строку в Bash без прерывания, если она не удалась?
В частности я пытаюсь источник дополнительного файла спутникового сценария:
. $OPTIONAL_PATH
Но при выполнении этого, если $OPTIONAL_PATH
не существует, весь сценарий визжит к остановке.
Я понимаю, что могу проверить, существует ли файл до его поиска, но мне любопытно, есть ли общий механизм многократного использования, который я могу использовать, который будет игнорировать ошибку без остановки.
Обновление: Видимо, это ненормальное поведение. Я не знаю, почему это происходит. Я не указываю в явном виде set -e
в любом месте ($-
is hB
), но он останавливается на ошибке. Вот выход я вижу:
./script.sh: line 36: projects/mobile.sh: No such file or directory
Я добавил echo "test"
сразу после исходной строки, но он никогда не печатает, так что это не что-то после этой строки, которая, выходящая. Я запускаю Mac OS 10.9.
Обновление 2: Ничего не было, это действительно было изменено как #!/bin/sh
вместо #!/bin/bash
. Спасибо за информативный ответ, Kaz.
Если вы позволите $ OPTIONAL_PATH не существует, просто проверьте, существует ли он и укажите его только тогда, когда он доступен. – ArturFH