Berechnen Sie die Variable und geben Sie sie an eine andere Variable aus


10

Der einzige Taschenrechner, den ich kenne, ist bc. Ich möchte 1einer Variablen hinzufügen und in eine andere Variable ausgeben.

Ich habe die nextnumVariable vom Zählen der Zeichenfolge in einer Datei erhalten:

nextnum=`grep -o stringtocount file.tpl.php | wc -w`

Nehmen wir an, der nextnumWert ist 1. Wenn mit hinzugefügt 1, wird es 2. Um zu berechnen, laufe ich:

rownum=`$nextnum+1 | bc`

habe aber Fehler bekommen:

1+1: command not found

Ich habe gerade im Berechnungsteil versagt. Ich habe versucht, den Backtick zu ändern, funktioniert aber immer noch nicht. Ich habe keine Ahnung, wie man Variablen berechnet und an eine andere Variable ausgibt.


Antworten:


21

Die Teilzeichenfolge in ` `muss ein gültiger Befehl sein:

rownum=`echo $nextnum+1 | bc`

Ist aber vorzuziehen, $( )anstatt zu verwenden ` `:

rownum=$(echo $nextnum+1 | bc)

Es besteht jedoch keine Notwendigkeit bc, die Shell kann ganzzahlige Arithmetik ausführen:

rownum=$((nextnum+1))

Oder noch einfacher in bashund ksh:

((rownum=nextnum+1))

8

Sie können auch die eingebaute Arithmetik in bash verwenden:

rownum=$((nextnum+1))

das wäre etwas schneller.


2

Absolut richtig und vervollständigen Sie die vorgeschlagenen Lösungen, um nur zu erwähnen, wie es früher gemacht werden musste, als nur die Bourne-Shell verfügbar war, so gefällt es:

rownum=`expr $nextnum + 1` 

1

Ich würde verwenden (wie bereits erwähnt) rownum=$((nextnum+1))oder ((rownum=nextnum+1))aber wenn Sie einen Standardbefehl bevorzugen, können Sie den Befehl let verwenden, wie zlet rownum=$nextnum+1


1
Das Aufrufen leteines „Standardbefehls“ ist sehr irreführend. $((…))ist eine Standardsyntax (POSIX), während letes sich um eine ksh- (und bash-, zsh-) Erweiterung handelt.
Gilles 'SO - hör auf böse zu sein'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.