В общем, я хочу запустить эти 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
Как насчет чего-то как:
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", чтобы быть более выборочными.
Вы можете сохранить каждый ключ в отдельном файле и проверить, существует ли этот файл.
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