web-dev-qa-db-ja.com

gpgキーがbashですでに存在するかどうかを確認してから、ダウンロード/追加をスキップする方法は?

基本的に、これらの2つのコマンドを実行したいのですが、キーが既に存在するかどうかを確認したいと思います。私はbashでifthenelseを実行する方法を知っていますが、結果を取得して変数に格納し、条件演算子に配置できるようにチェックする方法がわかりません。たとえば、すでに存在する場合は、ダウンロードと再追加をスキップできます。

例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
sudoranger

次のようなものはどうですか:

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をnullデバイス(2>/dev/null)にパイプして、スクリプトでapt-keyリストを使用したときに表示される警告を非表示にしました。

「sudo apt-key list」を単独で実行して、「grep」をより選択的に変更したい場合に、出力がどのように見えるかを確認してください。

1
Eric Mintz