0

new to programming and need a little help.

I need to access a MySQL database and loop thru the ‘ftpuser’ and ‘domain’ column to give me the output below

echo 2>&1 " 3cmd put -r /home/$ftpuser/backups/ s3://bucket-backup/$domainname/"

when I run the shell script below it outputs ever user with each domain

 3cmd put -r /home/user1/backups/ s3://bucket-backup/domain1.com/
 3cmd put -r /home/user1/backups/ s3://bucket-backup/domain2.com
 3cmd put -r /home/user1/backups/ s3://bucket-backup/domain3.com/
 3cmd put -r /home/user2/backups/ s3://bucket-backup/domain1.com/
 3cmd put -r /home/user2/backups/ s3://bucket-backup/domain2.com/
 3cmd put -r /home/user2/backups/ s3://bucket-backup/domain3.com/

and so on

the result im looking for is

 3cmd put -r /home/user1/backups/ s3://bucket-backup/domain1.com/
 3cmd put -r /home/user2/backups/ s3://bucket-backup/domain2.com/
 3cmd put -r /home/user3/backups/ s3://bucket-backup/domain3.com/
 3cmd put -r /home/user4/backups/ s3://bucket-backup/domain4.com/

here is the code

!/bin/bash

filelines=username=$(mysql -h localhost -u root -p -ss -e "use users; SELECT ftpuser FROM users; ")

filelines2=username=$(mysql -h localhost -u root -p -ss -e "use users; SELECT domain FROM users; ")

echo Start

for username in $filelines ; do

for domainname in $filelines2 ; do

echo 2>&1 " 3cmd put -r /home/$username/backups/ s3://bucket-backup/$domainname/"

done
done
Community
  • 1
  • 1
Joe Ryan
  • 13
  • 3

1 Answers1

0

Store the elements of filelines , filelines2 in separate bash arrays and loop once through the index as shown.

arr1=($filelines)
arr2=($filelines2)
for i in ${!arr1[@]}
 do
   echo 2>&1 " 3cmd put -r /home/${arr1[$i]}/backups/ s3://bucket-backup/${arr2[$i]}/"
done

Output:

 3cmd put -r /home/user1/backups/ s3://bucket-backup/domain1/
 3cmd put -r /home/user2/backups/ s3://bucket-backup/domain2/
 3cmd put -r /home/user3/backups/ s3://bucket-backup/domain3/
 3cmd put -r /home/user4/backups/ s3://bucket-backup/domain4/

You can refer Looping over arrays, printing both index and value for understanding the looping syntax.

Kaushik Nayak
  • 30,772
  • 5
  • 32
  • 45