Parece que bash malinterpreta el comando shasum
y tar
. Es un problema extraño donde algo anterior en el script afecta el código.
Del código siguiente,
shasum
se ejecuta y presenta como:: asum: monero-gui-linux-x64-v0.15.0.4.tar.bz2
tar
se ejecuta y presenta como:'ar: Error opening archive: Failed to open 'monero-gui-linux-x64-v0.15.0.4.tar.bz2
Por lo tanto, ambos comandos fallan. ¿Cuál es mi error aquí?
PD. Para aquellos de ustedes que quieran intentar ejecutar el código completo, deben importar la clave pgp pública para verificar el hash:https://github.com/monero-project/monero/blob/master/utils/gpg_keys/binaryfate.asc
#!/bin/bash
filename=$( curl -L --head https://downloads.getmonero.org/gui/linux64 2> /dev/null | grep Location: | sed 's:.*/::' )
filename_stripped=$( echo "$filename" | sed 's/\..[^.]*\.tar.bz2/ /g' )
version_repo=$( echo "$filename_stripped" | awk -F"-v" '/x64-v/ { print $2 }' )
echo ""
echo Current version: $version_current
echo Repo version: $version_repo
echo ""
function update {
# Update
wget -O hashes.txt https://getmonero.org/downloads/hashes.txt
gpg --verify hashes.txt
if [ $? -eq 0 ]
then
echo Signature OK
wget --content-disposition https://downloads.getmonero.org/gui/linux64
curr_shasum=$( shasum -a 256 "$filename" | awk '{ print $1 }' )
grep "$curr_shasum" hashes.txt
if [ $? -eq 0 ]
then
echo Hash OK
tar xvf "$filename"
else
echo Hash NOT ok
fi
else
echo Signature NOT ok
fi
}
while true; do
read -p "Do you wish to update?" yn
case $yn in
[Yy]* ) update;break;;
[Nn]* ) break;;
* ) echo "Please answer yes or no.";;
esac
done
Respuesta1
@steeldriverproporcionó la respuesta. Tenía un retorno de carro invisible en el nombre del archivo y lo resolví con:
filename_CR=$(curl -L --head https://downloads.getmonero.org/gui/linux64 2> /dev/null | grep Location: | sed 's:.*/::')
filename=$(echo $filename_CR | tr -d '\r')