Speichern von string in Variable

#1
Guten Morgen,
ich versuche schon seit einiger Zeit aus einer Textfile jeweils eine Zeile auszulesen, dann das letzte Feld davon auszulesen und in einer neuen variable zu speichern. Allerdings bekomme ich nur eine eher enttäuschende Ausgabe, nämlich nichts.

function restore()
{
while read -r line
do
NAME=$line |rev |cut -d'/' -f 1 |rev
echo "$NAME"
echo "$line"
done < Pfad zur Datei, aus der gelesen werden soll
}

Außerdem habe ich noch probiert:
$line |grep -o '[^/]*$'
$line |awk -F / '{print $NF}'

Bei allen bekomme ich einen leeren Output.
Eventuell kann mir ja einer von euch helfen, schonmal vielen lieben Dank!

Liebe Grüße - Redscape
 

AGGROStar1991

Well-Known Member
c-b Experte
#2
Das Problem liegt in deiner Zeile mit name. eine Variable irgendwo rein pipen geht nicht. echo "$line" | ... funktioniert. Der leere Output kommt daher, dass du rev mit einem leeren String aufrufst, aus dem leeren String die zweite komponente nehmen willst und es wieder reversen. Das ist natürlich leer.
Davon abgesehen würde ich lieber noch mal schauen ob du bei der pipe-anhäufung nicht etwas deutlich leichteres findest. Sed oder Awk zum Beispiel.
Und zum Dritten finde zumindest ich es bedeutend klarer, cat | zu verwenden statt die redirektion zum Schluss, aber das kann auch eine Geschmacksfrage sein.
 

AGGROStar1991

Well-Known Member
c-b Experte
#4
Na was mit dem Kommando falsch ist hab ich dir ja geschrieben. Wie man ein Kommando ausführt und das Ergebnis eine Variable bekommt kannst du denke ich selbst googlen, das ist nicht so schwer. Ein bisschen sollst du ja auch noch zu tun haben ;)
 
Oben