Функция BASH, которая обрабатывает выход из функций, в которых она вызывается - PullRequest
0 голосов
/ 24 октября 2018

У меня есть вопрос, касающийся функций bash.Я пытаюсь создать функцию с именем "checkexit", которую я могу вызвать в других функциях, чтобы проверить и посмотреть, нужно ли мне выйти из этой функции или нет.Я хотел попробовать использовать функцию, чтобы справиться с этим, потому что я не хочу использовать один и тот же код снова и снова.

С учетом сказанного, это не работает, потому что команда возврата, которую я использую, выходит только из функции, в которой она находится в данный момент, а не из функции, в которую вложена функция "checkexit".

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

Любая помощь будет принята с благодарностью!

Ниже приведен код для функции checkexit:

function checkexit {

if [ -z "$SITEURL" ] || [[ "$SITEURL" != *".whatever.net" ]]; then
    #if exitscript set to yes, exit script
    if [[ "$exitscript" = "YES" ]]; then
        echo "Skipping $SITEURL"
        echo
        exitscript=""
        return
    else
        echo "No Site URL provided. skipping!"
        echo
        return
    fi
fi

if [[ "$exitscript" = "YES" ]] && [[ "$nodownload" = "YES" ]]; then
    echo "Failed to download file, skipping items."
    echo
    exitscript=""
    return
elif [[ "$exitscript" = "YES" ]] && [[ "$noitems" = "YES" ]]; then
    echo "No items to download, skipping items."
    echo
    exitscript=""
    return
elif [[ "$exitscript" = "YES" ]]; then
    echo "Exit script triggered. Skipping $SITEURL"
    echo
    exitscript=""
    return
fi

}

1 Ответ

0 голосов
/ 24 октября 2018

В checkexit, чтобы все ваши операторы return возвращали ошибку выхода, такую ​​как return 1.

Затем в вызывающих функциях вызывайте ее с помощью

checkexit || return

Не пытайтесь управлять вызывающим абонентом непосредственно из вызываемой функции.

...