Как проверить, что ключ gpg уже существует в bash, а затем пропустить загрузку / добавление?

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

Пример 1 (--fetch-keys):

    sudo apt-key adv --fetch-keys https://packages.microsoft.com/keys/microsoft.asc
sudo tee /etc/apt/sources.list.d/vscode.list > /dev/null <<- END
    deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main
END

Пример 2 (--recv-keys):

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B9A06DE3
sudo tee /etc/apt/sources.list.d/inkscape.list > /dev/null <<- END
    deb [arch=amd64] http://ppa.launchpad.net/inkscape.dev/stable-daily/ubuntu bionic main
END
1
задан 25 September 2019 в 10:35

2 ответа

Как насчет чего-то как:

TEST=$(apt-key list 2> /dev/null | grep my_app_name)
if [[ ! $TEST ]]; then
    echo "Missing - need to run --fetch-keys or --recv-keys"
fi

я передал stderr по каналу в пустое устройство (2>/dev/null) для сокрытия предупреждения, что Вы добираетесь для использования способно-ключевого списка в сценарии.

Попытка, работающая "sudo способный ключ, перечисляет" самостоятельно, таким образом, Вы видите то, на что похож вывод, в случае, если Вы хотите изменить "grep", чтобы быть более выборочными.

1
ответ дан 11 November 2019 в 10:38

Вы можете сохранить каждый ключ в отдельном файле и проверить, существует ли этот файл.

keyring=/etc/apt/trusted.gpg.d/inkscape.gpg
if [ ! -f $keyring ]; then
  sudo apt-key --keyring $keyring \
    adv --keyserver keyserver.ubuntu.com --recv-keys B9A06DE3
fi
sudo tee /etc/apt/sources.list.d/inkscape.list > /dev/null <<- END
deb [arch=amd64] http://ppa.launchpad.net/inkscape.dev/stable-daily/ubuntu bionic main
END
0
ответ дан 14 June 2020 в 20:05

Другие вопросы по тегам:

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