X
Ich habe gerade ein anderes mögliches Problem gefunden: Wenn Sie einen Großbuchstaben verwenden, geschieht dies, wenn ich versuche, es in zu verwenden bc
:
X=3 (standard_in) 16: illegal character: X (standard_in) 16: syntax error
Anscheinend sind nur Kleinbuchstaben Variablen (aus der Manpage: Eingabenummern können die Zeichen 0-9 und AF enthalten. (Hinweis: Es müssen Großbuchstaben sein. Kleinbuchstaben sind Variablennamen ).
Daher x
wäre es eine gute Idee, zu einem anderen Kleinbuchstaben zu wechseln (da es bereits einen anderen Kleinbuchstaben gibt ).
Ich habe gerade versucht, einige sehr grundlegende Tests, offenbar mit print
in bc
macht es nicht ein Newline drucken. Wenn Sie lediglich die Variable / Nummer in die eigene Zeile setzen, wird eine neue Zeile gedruckt:
$ echo "x=5; print x; print 999; x; 15; print 15; 12345"|bc 59995 15 1512345
Ersetzen Sie Ihre print x"\n";
Leitung mit nur x;
sollte funktionieren?
Und mit a \n
with print sollte auch funktionieren, vielleicht hatten Sie ein Zitatproblem ... Als ich versuchte, bc
doppelte Anführungszeichen zu verwenden (definitiv falsch ;-) oder doppelte Anführungszeichen mit einfachen Anführungszeichen \n
, schlägt das fehl:
$ echo "x=5; print x; print 999; x; 15; print "15\n\n\n"; 12345"|bc (standard_in) 1: syntax error $ echo "x=5; print x; print 999; x; 15; print '15\n\n\n'; 12345"|bc (standard_in) 1: illegal character: ' (standard_in) 1: illegal character: \ (standard_in) 1: syntax error (standard_in) 1: illegal character: \ (standard_in) 1: illegal character: \ (standard_in) 1: illegal character: '
Aber mit einfachen Anführungszeichen für Echo und doppelten Anführungszeichen für die \n
s funktioniert es
$ echo 'x=5; print x; print 999; x; 15; print "15\n\n\n"; 12345'|bc 59995 15 15 12345
Also sollte auch das Ersetzen Ihrer print x"\n";
Leitung print "x\n";
funktionieren?
Ein informatives Zitat aus man bc
:
Liste drucken
Die print-Anweisung (eine Erweiterung) stellt eine andere Ausgabemethode bereit. Die "Liste" ist eine Liste von Zeichenfolgen und Ausdrücken, die durch Kommas getrennt sind. Jeder String oder Ausdruck wird in der Reihenfolge der Liste gedruckt. Es wird kein abschließender Zeilenvorschub gedruckt. Ausdrücke werden ausgewertet und ihr Wert wird zuletzt gedruckt und der Variablen zugewiesen. Zeichenfolgen in der Druckanweisung werden in der Ausgabe gedruckt und können Sonderzeichen enthalten. Sonderzeichen beginnen mit dem umgekehrten Schrägstrich (\). Die von bc erkannten Sonderzeichen sind "a" (Alarm oder Glocke), "b" (Rücktaste), "f" (Seitenvorschub), "n" (Zeilenvorschub), "r" (Wagenrücklauf), "q" ( Anführungszeichen), "t" (Tab) und "\" (Backslash). Alle anderen Zeichen nach dem Backslash werden ignoriert.