Se você pretende retirar o hash da página, algo assim funcionará. É o tipo de one-liner que eu escrevo para uso único, porque é provável que ele quebre assim que o layout muda:
hashsum=$(curl http://php.net/downloads.php |
grep -A1 -F ">php-${pkgver}.tar.xz<" |
sed 1d |
tr '>' '<' |
cut -d '<' -f3 )
Para entender por que essa é uma abordagem incrivelmente inflexível, pode ajudar a analisar a saída de cada etapa.
-
curl
busca a página e a envia para a saída padrão. (Se você não tivercurl
disponível,wget -O -
também funcionará.)A saída inclui isto:
... <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
retorna a linha que contém esse padrão (o nome do arquivo de origem que você precisa), mais 1 linha depois:<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>
-
Nós só nos preocupamos com a segunda linha, então
sed 1d
apaga a primeira linha. (Se você quiser ter certeza de que é um md5sum, usegrep 'class="md5sum"'
).<span class="md5sum">75f8d1693a470cefe2a50abd283eb291</span>
-
O comando
tr
transforma todos os>
em<
. Isso não é útil por si só, mas transforma a linha em algo com o qualcut
pode trabalhar:<span class="md5sum"<75f8d1693a470cefe2a50abd283eb291</span<
-
Por fim,
cut
trata os<
s (incluindo os que anteriormente eram>
s) como delimitadores e extrai o terceiro item, ou seja. o hash:75f8d1693a470cefe2a50abd283eb291