Переход от двоичного RPM к RPM со знаком OBS?

Здесь есть кое-что.

  • Вам очень редко приходится явно проверять $?что-либо или сохранять это в переменной (, если только вам не нужно ссылаться на один и тот же статус выхода несколько раз ).
  • Статус выхода функции — это статус выхода последней выполненной команды в функции, поэтому явное returnтребуется редко (редко с явным возвращаемым значением значение по крайней мере ).
  • Функция, проверяющая существование каталога, не должна создавать никаких каталогов. Лучше назовите его create_dir_if_needed.
  • Ошибка в [ result==0 ]. Строка result==0— это строка не-нулевой длины, и проверка строки таким образом вернет истину , если строка имеет не-нулевую длину, поэтому проверка всегда верна. Вместо этого вы, вероятно, хотели [ "$result" -eq 0 ].
  • Не забывайте всегда заключать в двойные кавычки расширения переменных и подстановки команд, если только вы не знаете, в каких контекстах это не требуется .

Имея это в виду:

create_dir_if_needed () {
    mkdir -p -- "$1"
}

Это вернет статус выхода mkdir -p -- "$1". Эта команда создаст именованный каталог (и любые промежуточные каталоги ), если они еще не существуют. Если команде mkdirне удается создать каталог, она завершится с нулевым статусом выхода, отличным от -, который станет статусом выхода функции. mkdir -pне завершится ошибкой, если каталог уже существует.

Вы могли бы использовать это как

if ! create_dir_if_needed "$dirpath"; then
    printf 'Failed to create directory "%s"\n' "$dirpath" >&2
    exit 1
fi

или, поскольку функция тривиальна, вы можете избавиться от нее и сказать

if ! mkdir -p -- "$dirpath"; then
    printf 'Failed to create directory "%s"\n' "$dirpath" >&2
    exit 1
fi

Разновидность функции create_dir_if_needed, которая использует mkdirбез -pи поэтому никогда не создает отсутствующие родительские каталоги для заданного пути к каталогу:

create_dir_if_needed () {
    if [ -d "$1" ]; then
        return
    fi

    mkdir -- "$1"
}

или,

create_dir_if_needed () {
    [ -d "$1" ] || mkdir -- "$1"
}

Вызов этой функции вернет истину(ноль ), если каталог уже существует или если вызов mkdirпрошел успешно. Оператор returnбез явного значения вернет статус завершения самого последнего выполненного оператора, в этом случае он вернет положительный результат теста [ -d "$1" ].

-1
28.03.2020, 05:49
1 ответ

Насколько я знаю, в OBS вы не можете использовать собственный ключ GPG. Он создаст новый для вашего проекта.

Если вы хотите использовать свой собственный ключ GPG, вы должны подписать его самостоятельно:https://rpm-packaging-guide.github.io/#Signing-Packages

0
19.03.2021, 02:32

Теги

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