[英]Use bash syntax after a here document
我需要創建一個連接到ftp服務器的腳本,並檢查一些備份的大小並將它們與本地備份的大小進行比較。 我的腳本如下所示:
#!/bin/bash
cd /var/archives/
j=0
array=( $(find -type f -name "*.gz") )
for i in "${array[@]}"
do
gunzip -c $i | tar t > /dev/null
if [ "$?" -ne "0" ]
then
echo "The file $i might be corrupted. You might check it"
exit 1
fi
size[$j]=$(stat -c%s "$i")
echo "${size[$j]}"
((j+=1))
done
echo "BackUp is correct. Checking md5sum..."
ftp -inv $ftp_host << EOF
quote USER $ftp_login
quote PASS $ftp_password
binary
cd $ftp_path
j=0
array=( $(find -type f -name "*.gz") )
for i in "${array[@]}"
do
size[$j]=$(stat -c%s "$i")
echo "${size[$j]}"
((j+=1))
done
EOF
但這只是在這里輸入內容,就像我的ftp中的命令一樣...
那么在這種情況下我該如何做循環和條件處理呢?
我剛剛在你的幫助下完成了我的劇本! 我發布的內容可能對某些人感興趣。
#!/bin/bash
ftp_host=localhost
ftp_login=*********
ftp_password=*******
ftp_path="**********$"
nbr_file=2
cd /var/archives/
j=0
array=( $(find -type f -name "*.gz") )
for i in "${array[@]}"
do
gunzip -c $i | tar t > /dev/null
if [ "$?" -ne "0" ]
then
echo "The file $i might be corrupted. You might check it"
exit 1
fi
size[$j]=$(stat -c%s "$i")
((j+=1))
done
echo "${size[@]}" > local_output
echo "open $ftp_host
user $ftp_login $ftp_password
binary
cd $ftp_path" > /tmp/ftp.$$
i=0
while [ $i -ne $j ]
do
echo "size ${array[$i]}" >> /tmp/ftp.$$
((i+=1))
done
echo "quit" >> /tmp/ftp.$$
ftp -ivn < /tmp/ftp.$$ > ftp_output
rm /tmp/ftp.$$
cd /root/backup/
./compare-size $nbr_file
if [ "$?" -eq "1" ]
then
exit 1
else
echo "The backup seems to be good !"
exit 0
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.