Visit The New, Modern Unix Linux Community


Printing the sum of a numbers


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Printing the sum of a numbers
# 1  
Printing the sum of a numbers

Hi

I am writing a script that will produce the total of the digits with in the number. Here is the script.

[root@***/]-bash# cat Sum_Digits
if [ "$? -lt 1" ]
then
echo "You must enter at least two digits"
echo "If you enter more than two digits after the base line program this script will print the sum of the digits"
echo "For examples if you enter $0 456 then this script will print the sum of the three digits as 15 (4+5+6)"
fi

n=$1
sd=0
sum=0

while [ "$n" -gt "0" ]
do
sd=`expr $n % 10`
sum=`expr $sum + $sd`
n=`expr $n / 10`
done

echo "The sum of the number: $sum"

The script works fine when I mentioned the number following the base line program as shown below

[root@*** /]-bash# ./Sum_Digits 45667
You must enter at least two digits
If you enter more than two digits after the base line program this script will print the sum of the digits
For examples if you enter ./Sum_Digits 456 then this script will print the sum of the three digits as 15 (4+5+6)
The sum of the number: 28

But it fails when I just enter the script with out any number

[root@crjueyudev01 /]-bash# ./Sum_Digits
You must enter at least two digits
If you enter more than two digits after the base line program this script will print the sum of the digits
For examples if you enter ./Sum_Digits 456 then this script will print the sum of the three digits as 15 (4+5+6)
./Sum_Digits: line 12: [: : integer expression expected
The sum of the number: 0

I tried with out quotes and the error message comes back as usual

Thanks
# 2  
Code:
if [ "${#}" -lt 1 ]

# 3  
This is the part of the revised script
if [ "${#}" -lt 1 ]
then
sd=`expr $n % 10`
sum=`expr $sum + $sd`
n=`expr $n / 10`
fi

This is the output

You must enter at least two digits
If you enter more than two digits after the base line program this script will print the sum of the digits
For examples if you enter ./welcome 456 then this script will print the sum of the three digits as 15 (4+5+6)
expr: syntax error
expr: syntax error
expr: syntax error
The sum of the number:

Thanks
# 4  

Code:
read num

case $num in
     "" | [0-9]) echo "Must be at least two digits" >&2; exit 1 ;;
     *[!0-9]*) echo Invalid number >&2; exit 2;;
esac

total=0
while [ -n "$num" ]
do
  temp=${num%?}
  total=$(( $total + ${num#"$temp"} ))
  num=$temp
done
echo $total

# 5  
Hi vgersh99 and cfajohnson

Thank you for your attention and help. It is solved.

Regards

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #261
Difficulty: Easy
On 8 June 1954, Alan Turing's housekeeper found him dead at the age of 41; a suicide by cyanide poisoning.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Sum even numbers from 1 to 100

I need help with this assignment. I'm very new to using UNIX/LINUX, and my only previous experience with programing anything is using python. We are writing scripts using vim, and this one I'm stumped on. "Write a shell script that finds and display the sum of even positive integers from 0 to... (5 Replies)
Discussion started by: Nastybutler
5 Replies

2. Shell Programming and Scripting

Sum of numbers in row

Need help in coding: File with several rows incl. numbers like 1 2 3 4 5 6 7 8 ... How can i build the sum of each row seperately? 10 26 ... Thx for help. Please use CODE tags as required by forum rules! (13 Replies)
Discussion started by: smitty11
13 Replies

3. Shell Programming and Scripting

Sum up numbers in a for loop

Hi i have to calculate some numbers, column by column. Herfore i used a for-loop.. for i in {4..26};do awk -F"," '{x'$i'+=$'$i'}END{print '$i'"\t" x'$i'}' file.tmp;done ----- printout ----- 4 660905240 5 71205272 6 8.26169e+07 7 8.85961e+07 8 8.60936e+07 9 7.42238e+07 10 5.6051e+07... (7 Replies)
Discussion started by: IMPe
7 Replies

4. Shell Programming and Scripting

Sum of numbers in three or more files

I have files : cat file1 15 88 44 667 33 4cat file2 445 66 77 3 56 (12 Replies)
Discussion started by: Natalie
12 Replies

5. Shell Programming and Scripting

Sum Numbers from different files

Hi All, I need to print the sum of numbers from different files. Input files: file1.out 10 20 30 file2.out 10 20 30 (5 Replies)
Discussion started by: saint2006
5 Replies

6. Shell Programming and Scripting

getting the sum of numbers

I basically have a file where I had to do a bunch of greps to get a list of numbers example: a file called numbers.txt 10000 10000 superman 10000 batman 10000 10000 grep '100' * | 10000 10000 10000 10000 10000 (2 Replies)
Discussion started by: zerofire123
2 Replies

7. Shell Programming and Scripting

Finding the sum of two numbers

cat *.out |grep "<some text>" | awk '{print $6}' For ex,This will reutrn me 11111 22222 is it possible to add these two numbers in the above given command itself?I can write this to a file and find the sum. But I prefer to this calculation in the above given line itself. Any... (3 Replies)
Discussion started by: prasperl
3 Replies

8. Shell Programming and Scripting

how to find a sum of multiple numbers

I have a command which returns some numbers as follows: $ls -l ${dbname}.ix* | awk '{print $5 }' 929792 36864 57344 73728 53248 114688 How can I find the sum of those numbers by piping this output into 'awk' or some other editor/command? Thanks a lot -A (3 Replies)
Discussion started by: aoussenko
3 Replies

9. Shell Programming and Scripting

sum numbers from stdout

hello im looking for short way to sum numbers from stdout the way i found to do it is to long for me i wander if there is shorter way to do it ok it 2 stage action this will make the list of number in to file sum.txt grep -c include *.c | awk '{l=split($0,a,":");print a;}' > sum.txt this... (1 Reply)
Discussion started by: umen
1 Replies

10. Shell Programming and Scripting

how to sum numbers in column

Hi, i want to sum all nubers in one column. Example: 12.23 11 23.01 3544.01 I'm trying to do this in awk, but it doesn't work properly. Seems like awk is summing only integers, for example: 12 11 23 3544 It cuts off numbers after dot. I used this command: akw /text/ file.txt |nawk... (1 Reply)
Discussion started by: iahveh
1 Replies

Featured Tech Videos