简体   繁体   English

bash循环mysql输出多个变量

[英]bash loop mysql output multiple to variables

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 我需要访问一个MySQL数据库并通过“ ftpuser”和“ domain”列进行循环,以提供以下输出

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 当我在下面运行shell脚本时,它会输出每个域的用户

 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 !/ 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

Store the elements of filelines , filelines2 in separate bash arrays and loop once through the index as shown. filelinesfilelines2的元素存储在单独的bash数组中,并通过索引循环一次,如图所示。

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. 您可以参考循环遍历数组,同时打印索引和值以了解循环语法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM