Как мне вызвать ошибку с Bash?
Я пытаюсь вызвать ошибку в Bash, в блоке, который заключен в скрипт Python Airflow.
export PATH=/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
export rundate=`TZ='America/Los_Angeles' date +%F -d "yesterday"`
export AWS_CONFIG_FILE="/home/ubuntu/.aws/config"
thisshouldnotrun
/home/ubuntu/bin/snowsql -f //home/ubuntu/script/dev/sql1.sql 1> /home/ubuntu/logs/"$rundate"_dev.log 2> /home/ubuntu/logs/"$rundate"_error_dev.log
По сути, эта последняя строка, которая вызывает snowsql
Функция всегда будет возвращать состояние выхода 0, даже когда я удаляю части перенаправления. Вот почему я перенаправляю на этот файл error_dev.log.
В основном, я хочу добавить if
блок и внутри него вручную выдать ошибку, если файл существует. Я пытался добавить exit 64
но Airflow, кажется, не так. Использует exit ##
проще всего поднять ошибку в Bash? Не уверен, что Airflow даже ожидает быть честным.
1 ответ
Если ты exit
с чем-либо, кроме 0
это считается кодом ошибки в bash.
Существует несколько различных кодов выхода, которые возвращаются при выходе / выходе SnowSQL:
0: все прошло гладко
1: что-то пошло не так с клиентом.
2: что-то пошло не так с аргументами командной строки.
3: SnowSQL не может связаться с сервером.
4: SnowSQL не может правильно связаться с сервером.
5: Параметр конфигурации exit_on_error был установлен, и SnowSQL вышел из-за ошибки.
В случае проверки существования файла вы можете использовать:
[[ -f <file> ]] && <on success> || <on failure> (exit 64, or w/e)