簡體   English   中英

在here文檔之后使用bash語法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM