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

1 Answer 1

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.

Sign up to request clarification or add additional context in comments.

2 Comments

You r welcome.could u pls mark this as the best answer. Thanks
Just did. Thanks again

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.