0

私は小さな Backupscript を実行しようとしていますが、おそらくとても簡単なことで立ち往生していますが、それを機能させることができません。

バックアップの各部分 (それぞれが個別のスクリプトで呼び出されます) の後に echo "backup 1 started" / echo "backup 1 ended" を使用します。

ここに私のテストスクリプトがあります

#!/bin/bash
# Backupcountervariable
bc=1
# Startbackup
startecho="echo $(date +%F_%T) | dobackup.sh | Backup "$bc" started!"
# Endbackup
endecho="echo $(date +%F_%T) | dobackup.sh | Backup "$bc" ended!"

echo $bc
$startecho
$endecho
bc=$(($bc+1))
echo $bc
$startecho
$endecho

変数 bc はその間に更新されますが、それは確かです。私の問題は、$startecho開始$endechoされたときに更新されないことだと思います$bc

変数内の変数を更新する方法のヒントはありますか?


編集:

私がここで何をしているのか誤解を招いて申し訳ありません。ここでは、完全なバックアップ スクリプトを確認できます。個々のバックアップ スクリプトを呼び出すだけで、出力がログ ファイルに書き込まれます。したがって、5 つのスクリプトではなく、cron 経由でこのスクリプトを実行するだけです。

#!/bin/bash
# Backupscripte ausfuehren 0.5
# Created: 2013/05/30 22:00
# Updated: 2013/06/05 02:31
# 0.5: Log verbessert, teamspeak hinzugefuegt, backupcounter
# 0.6: funktionen eingebaut, uebersichtlichkeit verbessert

### Variablendeklaration
# Log Variable definieren
logfile="/var/log/dobackup.log"
# Backupcountervariable
bc=1
# Backupcounterincrement
function bci() { bc=$((bc+1)) ; }
# Startbackup
function startecho() { echo "$(date +%F_%T) | dobackup.sh | Backup $bc gestartet!" >>$logfile ; }
# Endbackup
function endecho() { echo "$(date +%F_%T) | dobackup.sh | Backup $bc beendet!"  >>$logfile ; }


# Start des Backups Ausgeben
echo "----------------------------------------------------------------"  >>$logfile
echo "$(date +%F_%T) | dobackup.sh | FULL BACKUP GESTARTET!"  >>$logfile

#### /var/www Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/varwwwbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci

#### /var/customers Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/customersbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci

#### Mysqldump Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/mysqlbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci

### TS3 Backup
# Start Backup ausgeben
startecho
# Backupscript ausfuehren
sh /root/tsbackup.sh >>$logfile
# Ende Backup ausgeben
endecho
# Increment Backupcounter
bci



# Cleanup Backup FTP, remove files older then 30 days
echo "$(date +%F_%T) | dobackup.sh | Cleanup fuer den Backup FTP Server begonnen..." >>$logfile
#sh /root/cleanbackup.sh >>$logfile
echo "$(date +%F_%T) | dobackup.sh | Cleanup fuer den Backup FTP Server abgeschlossen!" >>$logfile

# Ende des Backups Ausgeben
echo "$(date +%F_%T) | dobackup.sh | FULL BACKUP BEENDET!"  >>$logfile

したがって、私のログは次のようになります。

----------------------------------------------------------------
2013-06-05_04:00:01 | dobackup.sh | FULL BACKUP GESTARTET!
2013-06-05_04:00:01 | dobackup.sh | Backup 1 gestartet!
2013-06-05_04:00:01 | Backupscript fuer /var/www/ gestartet!
2013-06-05_04:00:01 | Verzeichnis gewechselt! Beginne damit das Verzeichnis einzupacken...
2013-06-05_04:00:01 | Verzeichnis eingepackt! Beginne damit das Verzeichnis auf den FTP Server zu kopieren...
2013-06-05_04:00:01 | Backup erfolgreich auf den FTP Server verschoben! Temporaere Dateien werden nun geloescht...
2013-06-05_04:00:01 | Temporaere Dateien geloescht!
2013-06-05_04:00:01 | Backupscript fuer /var/www/ abgeschlossen!
2013-06-05_04:00:01 | dobackup.sh | Backup 1 beendet!
2013-06-05_04:00:01 | dobackup.sh | Backup 2 gestartet!
2013-06-05_04:00:01 | Backupscript fuer /var/customers/ gestartet!
2013-06-05_04:00:01 | Verzeichnis gewechselt! Beginne damit das Verzeichnis einzupacken...
2013-06-05_04:01:16 | Verzeichnis eingepackt! Beginne damit das Verzeichnis auf den FTP Server zu kopieren...
2013-06-05_04:04:56 | Backup erfolgreich auf den FTP Server verschoben! Temporaere Dateien werden nun geloescht...
2013-06-05_04:04:56 | Temporaere Dateien geloescht!
2013-06-05_04:04:56 | Backupscript fuer /var/customers/ abgeschlossen!
2013-06-05_04:04:56 | dobackup.sh | Backup 2 beendet!
2013-06-05_04:04:56 | dobackup.sh | Backup 3 gestartet!
2013-06-05_04:04:56 | Backupscript fuer mysqldump gestartet!
2013-06-05_04:04:56 | Verzeichnis gewechselt! Beginne mit dem mysqldump...
2013-06-05_04:04:56 | Mysqldump ausgefuehrt! Beginne mit dem einpacken des mysqldumps...
2013-06-05_04:04:56 | SQL Backup eingepackt! Beginne damit das Backup auf den FTP Server zu kopieren...
2013-06-05_04:04:56 | Backup auf FTP Server veschoben! Temporaere Files werden entfernt...
2013-06-05_04:04:56 | Temporaere Files wurden entfernt!
2013-06-05_04:04:56 | Backupscript fuer mysqldump abgeschlossen!
2013-06-05_04:04:56 | dobackup.sh | Backup 3 beendet!
2013-06-05_04:04:56 | dobackup.sh | Backup 4 gestartet!
2013-06-05_04:04:56 | Backupscript fuer /home/ts3/ gestartet!
2013-06-05_04:04:56 | Verzeichnis gewechselt! Beginne damit das Verzeichnis einzupacken...
2013-06-05_04:08:47 | Verzeichnis eingepackt! Beginne damit das Verzeichnis auf den FTP Server zu kopieren...
2013-06-05_04:17:08 | Backup erfolgreich auf den FTP Server verschoben! Temporaere Dateien werden nun geloescht...
2013-06-05_04:17:08 | Temporaere Dateien geloescht!
2013-06-05_04:17:08 | Backupscript fuer /home/ts3/ abgeschlossen!
2013-06-05_04:17:08 | dobackup.sh | Backup 4 beendet!
2013-06-05_04:17:08 | dobackup.sh | Cleanup fuer den Backup FTP Server begonnen...
2013-06-05_04:17:08 | dobackup.sh | Cleanup fuer den Backup FTP Server abgeschlossen!
2013-06-05_04:17:08 | dobackup.sh | FULL BACKUP BEENDET!

現在のところ、dobackup.sh だけが "| dobackup.sh |" を実行します。出力...

こんにちはデビッド

4

2 に答える 2

3

文字列の代わりに、シェル関数を使用する必要があります。

function startecho() { date +%F_%T ; echo " dobackup.sh | Backup $bc started!" ; }
function endecho() { date +%F_%T ; echo " dobackup.sh | Backup $bc ended!" ; }

startecho
endecho
bc=$((bc+1))
startecho
endecho
于 2013-06-04T23:59:57.390 に答える
0

これは必ずしもうまくいくとは限りません:

startecho="echo $(date +%F_%T) | dobackup.sh | Backup "$bc" started!"

ステートメント$(..)全体を囲む必要があります。echo

startecho="$(echo "$(date +%F_%T) | dobackup.sh | Backup "$bc" started!")"
于 2013-06-05T00:23:28.213 に答える