Bash-Skripte interpretieren Befehle falsch, nachdem grep und sed weitergeleitet wurden

Bash-Skripte interpretieren Befehle falsch, nachdem grep und sed weitergeleitet wurden

Es scheint, dass Bash den Befehl falsch interpretiert shasumund tar. Es ist ein seltsames Problem, bei dem etwas Vorheriges im Skript den Code beeinflusst.

Aus dem folgenden Code

  • shasumwird wie folgt ausgeführt und dargestellt:: asum: monero-gui-linux-x64-v0.15.0.4.tar.bz2
  • tarwird 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')

verwandte Informationen