So weisen Sie das Ergebnis von sed einer Variablen zu

So weisen Sie das Ergebnis von sed einer Variablen zu

Unten sehen Sie eine vollständige Kopie einer Demo, die ich verwende, um herauszufinden, wie ich mit dem sedBefehl die Leerzeichen in einem Personennamen entfernen und ihn so komprimieren kann, dass er keine Leerzeichen mehr enthält.

Sobald dies erledigt ist, möchte ich es der Variable zuweisen comp, damit ich es später im Skript wiederverwenden kann. Hier versuche ich einfach, echoes auf die Standardausgabe zu übertragen, damit ich sehen kann, dass es funktioniert hat.

Wenn ich das Skript ausführe und meinen Namen eingebe, Ronald McDonalderhalte ich als Ergebnis RonaldMcDonald}die geschweifte Klammer am Ende seines Namens oder was auch immer ich eingebe.

Wie bekomme ich es hin, dass das Ergebnis nicht }an den zugewiesenen Text angehängt wird?

#!/bin/bash

function readName {
    echo "Enter your full name:"
    read fullName
    clear
}    # end readName

function cmprsName {
    comp={ echo "$fullName" } | sed 's/ //g'
}    # end cmprsName

function sayItNow {
    echo $comp
}    # end sayItNow

function allTogether {
    readName
    cmprsName
    sayItNow
}    #end allTogether

case $1 in
        -h | --help )           allTogether
                                exit
                                ;;
        * )                     echo "$0 -h"
                                exit 1
esac

Antwort1

Dazu müssen Sie die Befehlssubstitution verwenden, d. h. statt

comp={ echo "$fullName" } | sed 's/ //g'

etwas wie

comp=$(echo "$fullName"  | sed 's/ //g')

oder

comp=`echo "$fullName"  | sed 's/ //g'`

verwandte Informationen