ファイルをダウンロードせずにリモートURLからファイル名を解析します。

ファイルをダウンロードせずにリモートURLからファイル名を解析します。

リポジトリから最新バージョンのアプリケーションをダウンロードし、アプリケーションをデプロイするスクリプトを作成しています。

主な問題:複数のリポジトリがあり、そのリポジトリが最新バージョンであることを確認する必要があります。

例えば

http://repo1/xyz/LATEST -> (redirects to) -> http://repo1/xyz/app-1.0.0.0.zip
http://repo2/xyz/LATEST -> (redirects to) -> http://repo1/xyz/app-1.1.0.0.zip

したがって、利用可能なリポジトリを繰り返してファイル名のみを取得する必要があります。古いバージョンのソフトウェアをダウンロードする必要はありません。

ベストアンサー1

次のようなものが役に立ちます。

curl -sIkL http://repo1/xyz/LATEST | sed -r '/filename=/!d;s/.*filename=(.*)$/\1/'

curl(1)オプションについてはマニュアルページを確認してください。興味深いことに-I, --head

コメントで要求された説明:

アイデアは、HTTP応答ヘッダーのみを要求することです。

したがって、-I次のオプションを使用してください。-sSilent Curlはヘッダ以外には何も印刷しません。-k「安全でない」SSL接続を許可します。それ以外の場合、カールは自己署名証明書を拒否します。-LHTTP(S)位置リダイレクトに従います。

その後、sed(1)応答ヘッダーからファイル名を取得するために使用されます。このフィールドは検索中なので、filename=この/filename=/!dセクションではそのフィールドを持たない出力からすべての項目を削除します。最後に、s/.*filename=(.*)$/\1/ウィジェットはそのフィールドが見つかった場合にのみファイル名を印刷します。

おすすめ記事