Здесь есть кое-что.
$?
что-либо или сохранять это в переменной (, если только вам не нужно ссылаться на один и тот же статус выхода несколько раз ). 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" ]
.
Насколько я знаю, в OBS вы не можете использовать собственный ключ GPG. Он создаст новый для вашего проекта.
Если вы хотите использовать свой собственный ключ GPG, вы должны подписать его самостоятельно:https://rpm-packaging-guide.github.io/#Signing-Packages