Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place! |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
 |
01-13-2017, 02:57 AM
|
#1
|
Member
Registered: Jun 2014
Posts: 111
Rep: 
|
arithmetic in shell script
Hi,
Though its a simple question, am unable to find answer for this.
Expecting the value of "e" as 7.
[root@localhost ~]# cat 1.sh
a=1
b=2
c=`expr $a + $b`
d=4
e=`expr $c + $b`
echo $e
[root@localhost ~]# sh 1.sh
5
[root@localhost ~]#
|
|
|
01-13-2017, 03:19 AM
|
#2
|
Moderator
Registered: Oct 2008
Distribution: Slackware [64]-X.{0|1|2|37|-current} ::12<=X<=15, FreeBSD_12{.0|.1}
Posts: 6,389
|
Why would you expect 3 + 2 to equal 7?
|
|
|
01-13-2017, 03:20 AM
|
#3
|
LQ Addict
Registered: Mar 2012
Location: Hungary
Distribution: debian/ubuntu/suse ...
Posts: 24,673
|
do not use root for such a simple tests
Code:
# use
c=$(expr $a + $b)
# instead of backticks, or even better: use
c=$(( a + b ))
last but not least why do you think it should be 7? I think 5 is the correct result. Probably you mistyped: e=c+b
|
|
|
01-13-2017, 07:15 AM
|
#4
|
Moderator
Registered: Mar 2011
Location: USA
Distribution: MINT Debian, Angstrom, SUSE, Ubuntu, Debian
Posts: 9,968
|
As stated by pan64 and astrogeek, do not use root. Another thing to do is turn on verbose output by adding a "set -xv" line near the top of your script. Also you should add a shebang line at the top of it:
Code:
#!/bin/bash
set -xv // turn on verbose debugging, comment out to remove
a=1
b=2
c=`expr $a + $b`
# d=4 commented out since it is irrelevant, however as other say, you've probably committed a typo.
e=`expr $c + $b` // This probably should be $d, correct?
echo $e
Note that for when you start to explore different forms of math, they will not work in this way, consider the bc command as well as the -l option if you wish to start performing floating point computations.
|
|
|
01-13-2017, 09:33 AM
|
#5
|
Member
Registered: Jun 2014
Posts: 111
Original Poster
Rep: 
|
Thanks guys.
I learnt new thing to use set -xv from you people from this post.
|
|
|
01-13-2017, 10:27 AM
|
#6
|
LQ Guru
Registered: Sep 2009
Location: Perth
Distribution: Arch
Posts: 10,042
|
Further to examples by pan64, I like to use:
|
|
|
01-13-2017, 10:56 AM
|
#7
|
Member
Registered: Jul 2004
Location: Chennai, India
Posts: 952
|
Arun, Did you also learn not to use root for such tasks? Or do you always login as root to avoid any permission problems?
OK
|
|
|
All times are GMT -5. The time now is 11:34 AM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|