У меня есть Баш скрипт с примерно следующей структурой:статус Баш-возврат из функции в фоновом режиме
function download {
# download a big file
}
function prepare_stuff {
# prepare some stuff
}
function process_download {
# process the downloaded file
}
download & prepare_stuff & wait
process_download
Первое, что он делает это, чтобы загрузить файл в несколько сотен мегабайт. Пока выполняется загрузка, некоторые другие вещи подготовлены в фоновом режиме. Когда оба они закончены, загрузка будет обработана.
download
может закончиться тремя различными способами:
- Ошибка загрузки (например, сервер не доступен)
- Файл был загружен успешно
- Файл не изменился на сервере с момента последней загрузки
Случай 1 - это условие ошибки (в этом случае функция должна возвращать что-то отличное от нуля), а 2 и 3 - нет (т.е. возвращаемое значение должно быть равно нулю).
Теперь я хочу, чтобы process_download
пропустил фактическую обработку при возникновении случаев 1 или 3, поэтому мне нужно передать какой-то статус с download
. Поскольку download
работает в подоболочке, переменная не будет работать (назначения выполняются в подоболочке и не передаются обратно в родительскую оболочку).
Как передать какое-либо значение из функции в подоболочке обратно в родительскую оболочку?
Это все сводится к инструментам, используемым в функции, то есть, более конкретно экзит-кода последней выполненной команды в функции. – Inian
У вас уже есть способ проверить условие 3, или вы ищете отзывы для этого? – Fred
@Fred Функция загрузки может идентифицировать все три условия. – user149408