Вернуть код выхода без закрытия оболочки

Я хотел бы вернуть код выхода из сценария BASH, который вызывается в другом сценарии, но также может быть вызван напрямую. Это примерно выглядит так:

#!/bin/bash
dq2-get $1
if [ $? -ne 0 ]; then
  echo "ERROR: ..."
  # EXIT HERE
fi
# extract, do some stuff
# ...

Теперь в строке EXIT HERE сценарий должен завершиться и вернуть код выхода 1. Проблема в том, что

  • я не могу использовать return , потому что когда я забываю исходный код скрипта вместо его вызова, return будет , а не exit, а остальная часть скрипта будет выполнена и все испортится.
  • Я не могу использовать exit , потому что это закрывает оболочку.
  • Я не могу использовать красивый трюк kill -SIGINT $$ , потому что он не позволяет вернуть код выхода.

Есть ли какая-нибудь жизнеспособная альтернатива, которую я упустил?

17
задан Paul Roub 28 August 2015 в 19:19
поделиться