Как мне вызвать ошибку с 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)
Другие вопросы по тегам