Unten sehen Sie eine vollständige Kopie einer Demo, die ich verwende, um herauszufinden, wie ich mit dem sed
Befehl 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, echo
es auf die Standardausgabe zu übertragen, damit ich sehen kann, dass es funktioniert hat.
Wenn ich das Skript ausführe und meinen Namen eingebe, Ronald McDonald
erhalte 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'`