Calculate variable, and output it to another variable
Solution 1
The substring inside the ` `
must be a valid command itself:
rownum=`echo $nextnum+1 | bc`
But is preferable to use $( )
instead of ` `
:
rownum=$(echo $nextnum+1 | bc)
But there is no need for bc
, the shell is able to do integer arithmetic:
rownum=$((nextnum+1))
Or even simpler in bash
and ksh
:
((rownum=nextnum+1))
Solution 2
You can also use built in arithmetic in bash:
rownum=$((nextnum+1))
which would be slightly faster.
Solution 3
Absolutely right and complete the suggested solutions, just to mention the way it has to be done in former times when only the Bourne-Shell was available, that's the way it likes it:
rownum=`expr $nextnum + 1`
Solution 4
I would use (as was mentioned before) rownum=$((nextnum+1))
or ((rownum=nextnum+1))
but if you prefer an standard command you can use the let command, like let rownum=$nextnum+1
Related videos on Youtube
apasajja
Updated on September 18, 2022Comments
-
apasajja almost 2 years
The only calculator I know is
bc
. I want to add1
to a variable, and output to another variable.I got the
nextnum
variable from counting string in a file:nextnum=`grep -o stringtocount file.tpl.php | wc -w`
Lets say the
nextnum
value is1
. When added with1
, it will become2
. To calculate, I run:rownum=`$nextnum+1 | bc`
but got error:
1+1: command not found
I just failed in calculation part. I've tried changing the backtick but still not works. I have no idea how to calculate variables and output it to another variable.
-
sunnysideup over 11 yearsHave a look at unix.stackexchange.com/questions/40786/…
-
-
Gilles 'SO- stop being evil' over 11 yearsCalling
let
a “standard command” is very misleading.$((…))
is standard (POSIX) syntax whereaslet
is a ksh (and bash, zsh) extension.