Überprüfen Sie die Ausgabe eines Skripts vor dem Ausführen

Überprüfen Sie die Ausgabe eines Skripts vor dem Ausführen

Ich habe ein Bash-Skript, das einige Datenbankjobs ausführt. Teile dieses Skripts:

DBNAME_ARRAY=( mydb1 mydb2 )  
DB2PATH=/bin/db2
BACKUPLOGPATH=/data1/`date +%y-%m-%d`_BACKUP.out 
IP=170.10.20.11 
.
.
for DBNAME in "${DBNAME_ARRAY[@]}"
do
BACKUPSQL="BACKUP DATABASE $DBNAME TO /dbdata1/${DBNAME,,}Backup"
$DB2PATH connect to $DBNAME 
.
.

bevor ich das ausführe, möchte ich wissen, ob die Variablen in jeder Zeile richtig platziert sind. Ist das möglich?
Ich möchte zum Beispiel so etwas:

  BACKUP DATABASE mydb1 TO /dbdata1/mtdb1Backup
  /bin/db2 connect to mydb1 
  BACKUP DATABASE mydb1 TO /dbdata2/mtdb1Backup
  /bin/db2 connect to mydb2  

nachdem ich überprüft habe, dass alles korrekt ist, führe ich sie aus.

Antwort1

In Ihrem Code konstruieren Sie eine SQL-Anweisung oder eine Liste von SQL-Anweisungen, die Sie an einen Datenbankserver weitergeben. Anstatt den Befehl aufzurufen, der die Anweisungen auf dem Server ausführen würde, geben Sie die Anweisungen an das Terminal aus.

Wenn Ihr ursprünglicher Befehl lautete

some_db_command "$backupsql"

dann könntest du dies ersetzen durch

printf '%s\n' "$backupsql"

Wenn das Skript dann andere Dinge ausführt, die von der Ausführung dieser SQL-Befehle abhängen, fügen Sie ein ein, exitbevor dies geschieht. Sie möchten nur die SQL-Befehle sehen, die an den Datenbankserver gesendet worden wären.

verwandte Informationen