Arrays in Shell Scripts


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Arrays in Shell Scripts
# 1  
Old 11-08-2010
Arrays in Shell Scripts

I have defined an array like this:

Code:
   set -A MYARRAY

   MYARRAY[0]=file1
   MYARRAY[1]=file2
   MYARRAY[2]=file3
   MYARRAY[3]=file4

   i=0
   while [[ $i < ${#MYARRAY[@]} ]]
   do
     echo "File Name $i :"  ${MYARRAY[$i]}
     i=`expr $i + 1 `
     echo "value of i=" $i
   done

This works perfectly and shows the value of each element of array as file name.

Now my question is can I use the same while loop in SFTP command??

I looked at the FAQ but those for loops do not help. So my question is can this while loop somehow work??

Last edited by Scott; 11-15-2010 at 02:54 AM.. Reason: Code tags, please...
# 2  
Old 11-09-2010
Try this:
Code:
cat tarray.ksh
#!/bin/ksh

set -A A_VAL one two three four five six seven eight nine ten

i=0

while [ -n "${A_VAL[$i]}" ]
do
   echo "${A_VAL[$i]}"
   (( i = i + 1 ))
done

results:
Code:
./tarray.ksh  
one
two
three
four
five
six
seven
eight
nine
ten

---------- Post updated at 11:22 PM ---------- Previous update was at 11:07 PM ----------

I apologize. I didn't read your whole post... must be late...

Try this
Code:
#!/bin/ksh

set -A A_FILE file1 file2 file3 file4 file5 file6 file7 file8 file9 file10

i=0

while [ -n "${A_FILE[$i]}" ]
do
   sftp -o IdentityFile=${KEYFILE} ${FTPUSER}@${FTPSERVER} <<-EOF
      put ${A_FILE[$i]}
      quit
   #
   # The EOF must be TABbed over.  It can not be spaces.
   # 
   EOF
   (( i = i + 1 ))
done

# 3  
Old 11-09-2010
Bug

This works in a while loop.

So my question is that if there are 10 files, it logs into the remote server 10 times.

So can the looping be made such that it connects to the server by SFTP ONCE and then loops 10 times??

I tried putting while loop after sftp command and it does not work.
Code:
   i=0
   sftp $USER_ID@$REMOTE_SERVER  <<-EOF      
   cd ${DIR}

     i=0
     while [[ $i < ${#MYARRAY[@]} ]]
     do
       echo "Value of i:"  ${i}
       echo "File Name $i :"  ${MYARRAY[$i]}
       put ${FILE_DIR}${MYARRAY[$i]}
       export i=`expr $i + 1 `
       echo "Value of i:"  ${i}
     done
     quit
   EOF

FOLLOWING WORKS FINE.
Code:
while [ -n "${A_FILE[$i]}" ]
do
   sftp -o IdentityFile=${KEYFILE} ${FTPUSER}@${FTPSERVER} <<-EOF
      put ${A_FILE[$i]}
      quit
   #
   # The EOF must be TABbed over.  It can not be spaces.
   # 
   EOF
   (( i = i + 1 ))
done


Last edited by Scott; 11-15-2010 at 02:55 AM.. Reason: Code tags
# 4  
Old 11-09-2010
sftp supports the use of a batch file containing a list of commands you want to execute once connected.
Code:
#!/bin/ksh

#
# Define the batch file.
#
SFTP_BAT_FILE=files_to_send.bat

#
# Remove SFTP_BAT_FILE if if exists.
#
if [ -f "${SFTP_BAT_FILE}" ]; then
   rm -f ${SFTP_BAT_FILE}
fi

set -A A_FILE file1 file2 file3 file4 file5 file6 file7 file8 file9 file10

i=0

while [ -n "${A_FILE[$i]}" ]
do
   #
   # Append each file to the batch file.
   #
   echo "put ${A_FILE[$i]}" >> ${SFTP_BAT_FILE}

   (( i = i + 1 ))
done

echo "exit" >> ${SFTP_BAT_FILE}

sftp -b ${SFTP_BAT_FILE} -o IdentityFile=${KEYFILE} ${FTPUSER}@${FTPSERVER}


Last edited by jsmithstl; 11-09-2010 at 07:24 AM.. Reason: corrected typo in comments.
This User Gave Thanks to jsmithstl For This Post:
# 5  
Old 11-15-2010
This had worked perfectly. Thanks a lot again.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need help in creating arrays using shell

Hi, I need help in creating a array in shell scirpt. I have a file which has following details. hostname devices device1 device 2 de abcdmhs10 1234 2343 2353 3343 3435 2343 bcdfmhs11 2343 2443 3434 8874 0343 3434 (5 Replies)
Discussion started by: jpkumar10
5 Replies

2. Shell Programming and Scripting

Shell arrays need help

Ok so spaces separate elements. What if you wanted an element to have a space in it? For instance: nums="one two three and a half" where "three and a half" is THE SAME element? (3 Replies)
Discussion started by: stevenswj
3 Replies

3. Shell Programming and Scripting

Using arrays in shell

I have three arrays. One is Master array and that has list of other array in config file. for e.g (for simplicity I have only defined array with 2 elements each) set +A MASTERARRAY SQLUPDATE_ONETIME SQLUPDATE_DAILY END_OF_ARRAY set +A SQLUPDATE_ONETIME update12 update22 END_OF_ARRAY... (4 Replies)
Discussion started by: anish
4 Replies

4. Shell Programming and Scripting

arrays in C shell

hi guys, i have the following code in C shell.. set i=0 while ($i < 11) master_array=${ARRAY} i++ done it gives me error at line 3: Variable syntax. what is wrong here? any help is appreciated. (4 Replies)
Discussion started by: npatwardhan
4 Replies

5. Shell Programming and Scripting

I need help with arrays in C Shell

Hi guys could you please post links that explain how to use and manipulate arrays in c shell (.csh files) ? examples are useful too :rolleyes: (5 Replies)
Discussion started by: domain
5 Replies

6. Shell Programming and Scripting

C shell arrays

how do you declare an array in the C shell and loop through each element? (2 Replies)
Discussion started by: npatwardhan
2 Replies

7. Shell Programming and Scripting

Accessing arrays in shell scripts

Hi All, I have an array in my script. For example, array=(file1.xml,file1-summary.xml,file2.xml,file2-summary.xml,file3.xml,file3-summary.xml); I am accessing the elements of the array by using the following code. len=${#array }; while ; do echo "${array}" done I want... (1 Reply)
Discussion started by: ananddr
1 Replies

8. Shell Programming and Scripting

shell / awk arrays

I have a bash shell script that sources a data file, the data file has array values such as: #--data file ---# sg_name="db1" sg_size="12892" sg_allow="50000" sg_name="db2" sg_size="12892" sg_allow="50000" export sg_name sg_size sg_allow #--end data file --# In my shell script... (8 Replies)
Discussion started by: lochraven
8 Replies

9. Shell Programming and Scripting

how to use arrays in c shell

hi :) i need help to explain arrays 2D in c shell like this in c++ int a (6 Replies)
Discussion started by: hgphsf
6 Replies

10. Shell Programming and Scripting

Bourne Shell and Arrays

Hi everyone, first post here so please be gentle :-) I normally likle to script in Bourne Shell simply for guarenteed compatibility across any system I might run across but this latest problem has me stumped. Arrays is a rather significant construct missing from sh and after finding a way to... (2 Replies)
Discussion started by: Unbeliever
2 Replies
Login or Register to Ask a Question