Возврат из вышестоящей функции, как -если это возможно?

Для даты -до -Dockerfile, которая будет компилироваться, см.:

FROM ubuntu:19.04

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get -y install \
 apache2 \
 php7.2 \
 php7.2-mysql \
 supervisor \
 wget

RUN echo 'mysql-server mysql-server/root_password password root' | debconf-set-selections && \
echo 'mysql-server mysql-server/root_password_again password root' | debconf-set-selections

RUN apt-get install -qqy mariadb-server

RUN wget http://wordpress.org/latest.tar.gz && \
 tar xzvf latest.tar.gz && \
 cp -R./wordpress/* /var/www/html && \
 rm /var/www/html/index.html

RUN (/usr/bin/mysqld_safe &); sleep 5; mysqladmin -u root -proot create wordpress

COPY wp-config.php /var/www/html/wp-config.php
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

EXPOSE 80

CMD ["/usr/bin/supervisord"]
1
07.11.2020, 15:09
1 ответ

Несколько человек предложили подоболочку, и я думаю, что это хорошая идея. Используя это, вы можете ввести функцию-оболочку, которая вызывает вторую функцию в подоболочке. При этом любая функция, которую вызывает эта вторая функция, может вызвать exitдля завершения подоболочки.

Вот пример, основанный на вашем исходном сообщении:

sudoedit_err() {
    printf >&2 'Error in sudoedit_run():\n'
    printf >&2 '%b\n' "$@"
    exit 1
}

_sudoedit_run() {
    # `sudoedit` is part of `sudo`'s edit feature
    if ! command -v sudo > /dev/null 2>&1; then
        sudoedit_err "'sudo' is required by this script."
    fi
    # primary non-empty arguments check
    if ! { [ $# -ge 3 ] && [ -n "$1" ] && [ -n "$2" ] && [ -n "$3" ]; } then
        sudoedit_err "Low number of arguments.\\nExpected: \$1 = editor type; \$2 = editor name; \$3, (\$4),... = file(s).\\nPassed $#: $*"
    fi
}

sudoedit_run()
{
    (_sudoedit_run "$@")
}

Вы бы не хотели вызывать обернутую функцию напрямую, так как это завершит вашу оболочку.

1
18.03.2021, 22:51

Теги

Похожие вопросы