Ich bin ziemlich neu zu schreiben bash und ich bin ein bisschen verwirrt über die Fehler/Problem mit meinem Code. Ich habe zwei Hauptprobleme. Im Fall P)
würde ich gerne sehen, ob eine bestimmte Datei existiert. Wenn es existiert, würde ich gerne die balance
mit der newbalance
aktualisieren.Mit grep und sed eine Zeichenfolge ersetzen?
P) read -p "Enter email: " email
read -p "Enter payment amount: " payment
newbalance=$(echo $payment + $balance | bc)
if [ -f $email ]; then
sed -i "s/$balance/$newbalance/" $email
#also tried
#find . -type f -name "$email" -exec sed -i "s/${balance}{newbalance}/" {} \;
else
echo -e "Error: customer not found\n\n"
fi
balance=$newbalance
continue
;;
wenn ich versuche, in einem payment
so zu lesen, wie 100.00
ich einen Fehler erhalten:
(standard_in) 2: syntax error
sed: -e expression #1, char 0: no previous regular expression
Das Dateiformat seines Selbst ziemlich einfach ist und der Rest erscheint nur einmal.
Der Code funktionierte, wenn ich Echo umgeleitet, um die Datei zu ändern. Jetzt, da ich versucht habe, sed
zu implementieren, hat der Code nicht mehr funktioniert, ich bin mir nicht sicher, was das verursacht. Ich habe versucht, find
mit sed
zu verwenden, aber das funktioniert auch nicht. Ich habe mir mehrere Stack-Überlauf-Fragen angeschaut, aber die Beispiele sind meinen ähnlich.
Dies ist eine der Dateien, die ich bin den Umgang mit
[email protected] John Boat
APT-5B 1100.00 100.00 2017-10-02
Sie haben Leerzeichen zwischen 'newbalance' und' = '. Sollte 'newbalance = $ (...' –
'newbalance' ist eine eingetragene Marke. Sie sollten wahrscheinlich einen anderen Variablennamen verwenden, bevor Sie in Schwierigkeiten geraten. – hek2mgl
Fügen Sie einen Beispielsatz von Zeilen aus Ihrer Datei hinzu, damit klar ist, um welche Art von Daten es sich handelt. – codeforester