Shell-Script

使用 http 遠端 MD5 雜湊

  • June 22, 2016

我想使用 pkgbuild 的 md5sums 函式,而不在每次更新時跟踪新的hashsum,而只需更改 pkgver 變數來建構我的包的新版本。

md5可以在我感興趣的項目的官方網站class上找到,在源檔案下載附近,價值跨度為md5sum

據我所知,hashsum將始終位於spanofclass md5sum之後的a spanof 中class releasedate,本身位於其中的兩個a href之後tar.xz,我如何使用 shell 腳本從網站中提取hashsum ,該腳本可以呼叫通常預裝在archlinux安裝上的工具到一個變數中將嚴格只包含雜湊和

如果您打算從頁面上刮掉散列,那麼這樣的事情會起作用。這是我為一次性使用而編寫的那種單線,因為一旦佈局發生變化,它很可能會中斷:

hashsum=$(curl http://php.net/downloads.php |
grep -A1 -F ">php-${pkgver}.tar.xz<" |
sed 1d |
tr '>' '<' |
cut -d '<' -f3 )

要理解為什麼這是一種非常不靈活的方法,查看每個階段的輸出可能會有所幫助。

  • curl獲取頁面並將其發送到標準輸出。(如果你沒有curl可用的,wget -O -也可以工作。)

輸出包括:

...
<ul>
         <li>
     <a href="/get/php-7.0.7.tar.bz2/from/a/mirror">php-7.0.7.tar.bz2</a> <a href="/get/php-7.0.7.tar.bz2.asc/from/a/mirror">(sig)</a> [13,776Kb]          <span class="releasedate">26 May 2016</span>
     <span class="md5sum">cc231de15146ca14a69610f695995ab8</span>
     <span class="sha256">474f2925c4782b94016e3afbb17b14ff9cc6f4fdb6f6e231b36a378bb18a3d1a</span>
             </li>
         <li>
     <a href="/get/php-7.0.7.tar.gz/from/a/mirror">php-7.0.7.tar.gz</a> <a href="/get/php-7.0.7.tar.gz.asc/from/a/mirror">(sig)</a> [17,792Kb]          <span class="releasedate">26 May 2016</span>
     <span class="md5sum">197ec66d134da8968ddd0b89f1cfac2a</span>
     <span class="sha256">66282ff4a9f88fe9607d9574e15bf335885b964245591a1740adb3f79c514a67</span>
             </li>
         <li>
     <a href="/get/php-7.0.7.tar.xz/from/a/mirror">php-7.0.7.tar.xz</a> <a href="/get/php-7.0.7.tar.xz.asc/from/a/mirror">(sig)</a> [11,219Kb]          <span class="releasedate">26 May 2016</span>
     <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
     <span class="sha256">9cc64a7459242c79c10e79d74feaf5bae3541f604966ceb600c3d2e8f5fe4794</span>
             </li>
       <li>
   <a href="http://windows.php.net/download#php-7.0">
     Windows downloads
   </a>
 </li>
</ul>
...
  • grep -A1返回包含該模式的行(您需要的源文件的名稱),加上它後面的 1 行:
 <a href="/get/php-7.0.7.tar.xz/from/a/mirror">php-7.0.7.tar.xz</a> <a href="/get/php-7.0.7.tar.xz.asc/from/a/mirror">(sig)</a> [11,219Kb]          <span class="releasedate">26 May 2016</span>
 <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
  • 我們只關心第二行,所以sed 1d刪除第一行。(如果您想確定它是 md5sum,請grep 'class="md5sum"'改用。)
 <span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
  • tr命令將全部>變為<。這本身沒有用,但可以將這條線變成cut可以使用的東西:
 <span class="md5sum"<75f8d1693a470cefe2a50abd283eb291</span<
  • 最後,cut將那些<s(包括以前>的 s)視為分隔符,並提取第 3 項,即。雜湊:
75f8d1693a470cefe2a50abd283eb291

引用自:https://unix.stackexchange.com/questions/291100