Eu sei que isso deve ser uma pergunta estranha, mas para mim, sempre desenvolvido em C
, C++
e Java
(e agora em bash
) parece mais difícil.
Eu estou tentando verificar se md5
e filename
de duas lista (um do meu servidor remoto e outro do meu servidor local) corresponde. Foi o que eu fiz até agora:
#!/bin/bash
datacenter="amazon"
hostname='hostname';
path="backup/server245"
s3='s3cmd ls --list-md5 s3://company-backup/company/"$datacenter"/"$hostname"/"$path"/';
s3_list=$(echo "$s3" | tr -s ' ' | cut -d ' ' -f 4,5 | sed 's= .*/= =');
echo "$s3_list"
locally='md5sum /"$path"/*.gz';
locally_list=$(echo "$locally" | sed 's= .*/= =');
echo "$locally_list";
Isso me dá a seguinte saída:
S3 LIST
d41d8cd98f00b204e9800998ecf8427e
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
31d90af7969f5003b27f68e27e7f2cb1 app.gz
LOCALLY LIST
31d90af7969f5003b27f68e27e7f2cb1 app.gz
Estou tentando criar dois for's
para fazer a verificação, mas estou tendo algum problema em interagir pela lista em for
com bash
. Abaixo do código que eu forneci acima está:
for i in "$s3_list"
do
echo "$i"
echo "-----------"
done
Qual é a seguinte saída:
d41d8cd98f00b204e9800998ecf8427e
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
31d90af7969f5003b27f68e27e7f2cb1 app.gz
-----------
qual deve ser algo como:
d41d8cd98f00b204e9800998ecf8427e
-----------
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
-----------
31d90af7969f5003b27f68e27e7f2cb1 app.gz
-----------
O que significa que estou interagindo com as linhas uma por uma, não todas juntas, como mostra acima.
O que estou fazendo (entendendo errado sobre o bash) aqui?