Adding Two Array in shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Adding Two Array in shell script
# 1  
Old 08-20-2017
Adding Two Array in shell script

Hi Experts,

I've got this problem where I need to add two array in shell script such that that is an element is greater than 9 then it get further split into individual digit, something like below :
Code:
Input :-
array1=(2 6 8 9 10 12)
array2=(5 4 6 8 12 14)
Output :-
array3=(7 1 0 1 4 1 7 2 2 2 6)

Explanation :- 5+2 = 7   (less then 10 so no action required)
                    6+4 = 10 (greater then 9 so it gets split into 1,0)

Here is what I've tried to add two array which is working fine but not sure on how to split the number.
Code:
#!/bin/bash
welcome()
{
echo "Welcome to first array progg."
}
main_logic()
{
 declare -a arr1=(5 7 9 12 14 19)
 declare -a arr2=(7 4 3 8 12 17)
 declare -a arr3=()
 sum=0
 len=${#arr1[@]}
 for ((i=0; i<$len; i++))
 do
     sum=$(( ${arr1[$i]}+${arr2[$i]} )) 
     #echo $sum
     arr3=("${arr3[@]}" "$sum")
 done 
echo ${arr3[@]}
}
##Entry Point of the Progg.
welcome
main_logic

# 2  
Old 08-20-2017
Code:
     sum=$(( ${arr1[$i]}+${arr2[$i]} ))       #echo $sum
     if [ $sum -gt 9 ]
     then
       arr3=("${arr3[@]}" "$sum/10") #sum divided by 10
       arr3=("${arr3[@]}" "$sum%10") #mod 10 sum
     else
       arr3=("${arr3[@}" "$sum")
      fi

I don't normally use bash or arrays, so I am sure of the syntax.
Will there be a possibility that the sum is greater than 99?
# 3  
Old 08-20-2017
How about
Code:
for i in ${!array1[@]}; do printf "%s" $((array1[i] + array2[i])); done | od -An -c
   7   1   0   1   4   1   7   2   2   2   6


Last edited by RudiC; 08-20-2017 at 11:17 AM..
This User Gave Thanks to RudiC For This Post:
# 4  
Old 08-23-2017
Thanks Rudic,

Can you please also explain the logic used in below part :
Code:
od -An -c

# 5  
Old 08-23-2017
man od:
Quote:
-A, --address-radix=RADIX
output format for file offsets; RADIX is one of [doxn], for Decimal, Octal, Hex or None
.
.
.
-t, --format=TYPE
select output format or formats
.
.
.
-c same as -t c, select printable characters or backslash escapes
# 6  
Old 09-07-2017
Thanks Rudic,

Really liked the way you did it, very short and crisp. Just wondering if there is way to achieve it via sed or some other array operation.
# 7  
Old 09-07-2017
Why sed specifically? Is this homework?

Shell doesn't really have "array operations", just loops.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Adding to an array in an external file, and adding elements to it.

I have an array in an external file, "array.txt", which contains: char *testarray={"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};I want to be able to add an element to this array, and have that element display, whenever I call it, without having to recompile... (29 Replies)
Discussion started by: ignatius
29 Replies

2. Shell Programming and Scripting

Adding text to the first line of a shell script

the first line of every unix script written in an interpreted language always has a "#!<path-to-the-language>" is there a way to include other text in that first line without it affecting the ability of the script to run??? for instance, if i change the following line: #!/bin/sh echo blah... (1 Reply)
Discussion started by: SkySmart
1 Replies

3. Shell Programming and Scripting

Pass C shell array to another C shell script(csh) and shell(sh)

Dear Friends, Please help me on this my script name is send.csh In this i have written the statement like this set args = ( city state country price ) I want to pass this array to another c shell called receiver.csh. and i want to use it in this c shell or how to pass to... (2 Replies)
Discussion started by: SA_Palani
2 Replies

4. Shell Programming and Scripting

Help in adding text before columns in shell script

Hello, Can someone please help in below requirement. My requirement is to add date before to first column,some text before 1st,2nd coulmns and insert a new column in between 2 and 3 columns. input file. aa 123 dddd aa 667 kdkdk ddj 738 kkkk aa 123 dddd aa 667 ... (5 Replies)
Discussion started by: Cva2568
5 Replies

5. Shell Programming and Scripting

Need Shell Script for Array

Hi all, I have an input file like below (a comma seperated file) 345,12,10 400,11,8 328,1,3 I need to get the output as below ... record 345 sum is 12 record 400 sum is 10 record 328 sum is 1 record 345 count is 10 record 400 count is 8 record 328 count... (15 Replies)
Discussion started by: hemanthsaikumar
15 Replies

6. Shell Programming and Scripting

Adding tab to excel sheet with shell script

(1 Reply)
Discussion started by: sagar_1986
1 Replies

7. Shell Programming and Scripting

Adding a job to crontab via shell script

Is it possible to add a job to crontab with a shell script? The existing jobs in the crontab should exist as it was. The new job should be appended. Also, the crontab file is /var/spool/cron/root. (1 Reply)
Discussion started by: proactiveaditya
1 Replies

8. Shell Programming and Scripting

Adding lines to file through a shell script

Hi, I'm pretty new to the whole scripting thing. I've gotten a decent hang of it so far but am wondering if there's a way to add lines to a C, C++, Java, HTML, text file with a shell script. Any help would be greatly appreciated. :) (4 Replies)
Discussion started by: Doctor Manhatta
4 Replies

9. Shell Programming and Scripting

Adding ssh commands to a shell script

I have written some scripts that do a few admin tasks on 23 servers I manage. Usually I execute these scripts from one server by running ssh commands remotley, i.e. ssh root@server2 shellscript, ssh root@server2 shellscript & so on.. It works fine but I want to improve this by writing a... (3 Replies)
Discussion started by: Moxy
3 Replies

10. Shell Programming and Scripting

Adding options to a shell script

I want to add options to my shell script but having problems, my code so far is; #!/bin/bash lflag= iflag= while getopts 'l:i:' OPTION do case $OPTION in l) lflag=1 lval="$OPTARG" ;;... (1 Reply)
Discussion started by: paulobrad
1 Replies
Login or Register to Ask a Question