Ich habe einige Probleme bei der Skripterstellung ... wenn mir jemand helfen könnte, wäre es wirklich gut!Arithmetisches Problem mit Shell-Skript
Mein Skript hat:
VISITS=$((WR + RD));
SERVICE_DEMAND=$((VISITS*SERVICE_DEMAND));
Und ich diesen Fehler:
./calc_serv_demand.sh: line 12: 0.0895406: syntax error: invalid arithmetic operator (error token is ".0895406")
Kann mir jemand helfen?
Ich denke, es ist, weil die Bash nur mit Ganzzahl funktioniert ... Ich muss jedoch float-Werte verwenden.
Dank im Voraus
Problem gelöst:
VISITS = $ (echo $ WR + $ RD | bc); echo $ BESUCHE
SERVICE_DEMAND = $ (echo $ VISITS '*' $ SERVICE_TIME | bc); Echo $ SERVICE_DEMAND
HUm ... es funktioniert für die Summe, es funktioniert nicht gut für die Multiplikation. Es ist komisch, weil ich auf BC Handbuch überprüft habe und es sollte funktionieren! Schau mal: Mein Skript: echo $ WR + $ RD | bc &> BESICHTIGUNGEN; VISITS = $ (echo $ WR + $ RD | bc); # funktioniert gut echo $ VISITS SERVICE_DEMAND = $ (echo $ VISITS * $ SERVICE_TIME | bc); # Rückkehr einen seltsamen Fehlers $ SERVICE_DEMAND Fehler echo: 0,0895406 3,42007 12,401 3,5096106 (standard_in) 1: Syntaxfehler (standard_in) 1: unzulässiges Zeichen: K (standard_in) 1: unzulässiges Zeichen: H (standard_in) 1: unzulässiges Zeichen: T ... – Alucard
@user: Da '*' eine spezielle Bedeutung für die Shell hat, müssen Sie entweder '\\ *' oder ''*'' schreiben. Außerdem sollten Sie das Ergebnis der Berechnung direkt einer Variablen zuweisen, anstatt sie in die Datei auszugeben: 'VISITS = $ (echo $ WR + $ RD | bc)'. –
@ user368453: Wenn Sie ein 'echo' eines' * 'machen, werden alle Dateinamen im aktuellen Verzeichnis angezeigt. Setzen Sie einfach die Formel in Anführungszeichen und es wird funktionieren: 'SERVICE_DEMAND = $ (echo" $ VISITS * $ SERVICE_DEMAND "| bc)' –