Bash Shell script--need help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash Shell script--need help
# 1  
Old 08-04-2009
Bash Shell script--need help

Hi all,

i am beginner to unix and trying out a shell script which does the following. i have to calculate a persons salary. his salary is read from the keyboard. he has two types of deductions. 40% as dearness allowance and 20% as house rent. i have to print the gross salary. here is the code i've come up with. when i executed the shell script it says

expr: non-numeric argument

Code:
#!/bin/bash
echo what is your salary\?
read salary
DA=0.4
Deduction=`expr $DA \* $salary`
rent=0.2
rentdeduct=`expr $rent \* $salary`
grossalary=`expr $salary - \($Deduction + $rentdeduct\)`
echo $grossalary

thanks chaitanya

---------- Post updated at 01:26 PM ---------- Previous update was at 01:13 PM ----------

hey guys, i modified the script a little here is the code now

Code:
#!/bin/bash
echo what is your salary\?
read salary
DA=0.4
Deduction=`echo $DA \* $salary | bc`
rent=0.2
rentdeduct=`echo $rent \* $salary | bc`
grossalary=`echo $salary - \($Deduction + $rentdeduct\) | bc`
echo $grossalary

I am getting an o/p as 2400, i.e. when i enter the salary as 6000. now the script doesnt seem to calculate rentdeduct and grossalary.

thanks
chaitanya

Last edited by DukeNuke2; 08-04-2009 at 03:31 PM.. Reason: added code tags
# 2  
Old 08-04-2009
I use ksh in my script, this is one reason - builtin float calculation support.
Code:
#!/bin/ksh
# LANG set to C = no locale delimeter , / . and so on
LANG=C
echo -n "what is your salary ?"
read salary
DA=0.4
(( Deduction=DA * $salary  ))
rent=0.2
(( rentdeduct=rent * salary  ))
(( grossalary=salary - Deduction + rentdeduct  ))
echo "$grossalary"
# or better for output
printf "%.2f\n" "$grossalary"

Or if use bash, then use bc "calculator":
Code:
value=$( echo "$num1 * $num2" | bc )

# 3  
Old 08-04-2009
Add set -x to the script just after your bash definition to see some debugging output, you'll probably be able to find where you're making incorrect calculations.
# 4  
Old 08-04-2009
To keep the forums high quality for all users, please take the time to format your posts correctly.

First of all, use Code Tags when you post any code or data samples so others can easily read your code. You can easily do this by highlighting your code and then clicking on the # in the editing menu. (You can also type code tags [code] and [/code] by hand.)

Second, avoid adding color or different fonts and font size to your posts. Selective use of color to highlight a single word or phrase can be useful at times, but using color, in general, makes the forums harder to read, especially bright colors like red.

Third, be careful when you cut-and-paste, edit any odd characters and make sure all links are working property.

Thank You.

The UNIX and Linux Forums
# 5  
Old 08-05-2009
Quote:
Originally Posted by DukeNuke2
To keep the forums high ...
Why this text is added so many threads. Example this. I can't see any problem in previous messages. I hope when you are adding this constant long text using cut-paste, you add also link to the message, easier to understand your meanings. If you mean this time those bold text, then tell it only. This kind of noice without meaning make reading more heavy.

Not so soul.
# 6  
Old 08-05-2009
this text is added cause the members don't use CODE tags. it is a rule to use these... i've edited the OP thread and added code tags... also it is not your work to do moderation. if you've questions use the proper forum (feedback) cause THIS post makes reading realy more heavy!
for direct question to a mod or admin there is also the way of using a PM instead.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

In Bash shell - the ps -ef shows only the /bin/bash but the script name is not displayed

In Bash shell - the ps -ef shows only the /bin/bash but the script name is not displayed ? Is there any way to get the script names for the process command ? --- Post updated at 08:39 AM --- in KSH (Korn Shell), my command output shows the script names but when run in the Bash Shell... (3 Replies)
Discussion started by: i4ismail
3 Replies

2. Shell Programming and Scripting

Different behavior between bash shell and bash script for cmd

So I'm trying to pass certain json elements as env vars and use them later on in a script. Sample json: JSON='{ "Element1": "file-123456", "Element2": "Name, of, company written in, a very weird way", "Element3": "path/to/some/file.txt", }' (part of the) script: for s... (5 Replies)
Discussion started by: da1
5 Replies

3. Shell Programming and Scripting

Help with Bash shell script

Hi All, I have a script which as below #!/bin/bash for i in `cat servers` do ssh uname@$i "df -t xfs --total | grep total"; done > out.txtOutput as below -------------- total 140583991104 118622795524 21961195580 85% - total 140583991104 112888595524 27695395580 ... (4 Replies)
Discussion started by: npk
4 Replies

4. Shell Programming and Scripting

Need help with bash shell script

I need to create digit day script that takes a single numeric argument and then it should print out the day of the week using the number modulo 7 formula e.g: 0 - Sunday 6- Saturday 131 - Friday I am fairly new to unix so I don't know how to use the number modulo 7 formula. Does the script need... (3 Replies)
Discussion started by: lukefrost96
3 Replies

5. Shell Programming and Scripting

Bash shell script to check if script itself is running

hi guys we've had nagios spewing false alarm (for the umpteenth time) and finally the customer had enough so they're starting to question nagios. we had the check interval increased from 5 minutes to 2 minutes, but that's just temporary solution. I'm thinking of implementing a script on the... (8 Replies)
Discussion started by: hedkandi
8 Replies

6. Shell Programming and Scripting

Bash Shell Script

HELP!My program ends after entering one choice---need help making it take multiple inputs,instead of terminating after displaying just one #!/bin/bash# Crude address databaseclear # Clear the screen.echo " Contact List"echo " ------- ----"echo "Choose one of the following... (6 Replies)
Discussion started by: help123
6 Replies

7. Shell Programming and Scripting

Help with bash shell script

Hi, I have a file in which records contains non ascii characters. The records are comma delimited and quoted. The non ascii characters are found in a particular column. Example records "YY","AK000021","Ã","IO","PP" "Y1","AK000022","Ã","PO","PP" "Y2","AK000022","Ã","PO","PP" I need to... (2 Replies)
Discussion started by: akshu.agni
2 Replies

8. Shell Programming and Scripting

Bash shell script- help

I need to invoke a program on remote server using ssh in a shell script. In addition i would like to capture date/time and if there is any errors , then script should write to log file. can someone please help me out? (1 Reply)
Discussion started by: sam101
1 Replies

9. UNIX for Dummies Questions & Answers

Bash shell script

Hi Guys, I am trying to alter a script for my company. I need the start of it to go something like this. User is asked to input 8 numbers 8 numbers are written to a txt file ***** ***** ***** txt file is read ***** ***** The text file gets read in between other files represented by... (2 Replies)
Discussion started by: outthere_3
2 Replies

10. UNIX for Dummies Questions & Answers

need help with bash shell script

Hi guys! I have just started with shell programming!! I am having pronblem with variable subsitutuion. when i do egrep "*" marks this will give me the pattern match. but how can i catch the output of that result in a variable. if i say result = egrep "*" marks it gives me syntax... (2 Replies)
Discussion started by: vmtailor
2 Replies
Login or Register to Ask a Question