Я знаю, что это звучит странно, но для меня то, что всегда разрабатывалось на C
, C++
и Java
(а теперь и на bash
), кажется более странным.
Я пытаюсь проверить, совпадают ли md5
и filename
из двух списков (один с моего удаленного сервера и другой с моего локального сервера). Это то, что я сделал до сих пор:
#!/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";
Это даст мне следующий вывод:
S3 LIST
d41d8cd98f00b204e9800998ecf8427e
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
31d90af7969f5003b27f68e27e7f2cb1 app.gz
LOCALLY LIST
31d90af7969f5003b27f68e27e7f2cb1 app.gz
Я пытаюсь создать два for's
чтобы сделать проверку, но у меня возникают некоторые проблемы в взаимодействуют между собой по списку в for
с bash
Ниже код, который я предоставляю выше:
for i in "$s3_list"
do
echo "$i"
echo "-----------"
done
Который дает следующий вывод:
d41d8cd98f00b204e9800998ecf8427e
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
31d90af7969f5003b27f68e27e7f2cb1 app.gz
-----------
что это должно быть что-то вроде:
d41d8cd98f00b204e9800998ecf8427e
-----------
41eae9b40d23de2f02bf07635870f6d0 app.20121117040001.gz
-----------
31d90af7969f5003b27f68e27e7f2cb1 app.gz
-----------
Это означает, что я взаимодействую со строками одна за другой, а не все вместе, как показано выше.
Что я здесь делаю (неправильно понимаю bash)?