Es scheint, dass Bash den Befehl falsch interpretiert shasum
und tar
. Es ist ein seltsames Problem, bei dem etwas Vorheriges im Skript den Code beeinflusst.
Aus dem folgenden Code
shasum
wird wie folgt ausgeführt und dargestellt:: asum: monero-gui-linux-x64-v0.15.0.4.tar.bz2
tar
wird wie folgt ausgeführt und dargestellt:'ar: Error opening archive: Failed to open 'monero-gui-linux-x64-v0.15.0.4.tar.bz2
Daher schlagen beide Befehle fehl. Was ist hier mein Fehler?
PS. Für diejenigen unter Ihnen, die versuchen möchten, den vollständigen Code auszuführen, muss der öffentliche PGP-Schlüssel importiert werden, um den Hash zu überprüfen: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
Antwort1
@Stahlfahrerlieferte die Antwort. Ich hatte einen unsichtbaren Wagenrücklauf im Dateinamen und löste ihn mit:
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')