Tengo un script bash que realiza algunos trabajos de base de datos. partes de este guión:
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
.
.
Antes de ejecutar esto, quiero saber si las variables están colocadas correctamente en cada línea. ¿es posible?
por ejemplo quiero algo como esto:
BACKUP DATABASE mydb1 TO /dbdata1/mtdb1Backup
/bin/db2 connect to mydb1
BACKUP DATABASE mydb1 TO /dbdata2/mtdb1Backup
/bin/db2 connect to mydb2
después de comprobar que todo está correcto los ejecuto.
Respuesta1
En su código, está construyendo una declaración SQL, o una lista de declaraciones SQL, que le entregará a un servidor de base de datos. En lugar de invocar el comando que ejecutaría las declaraciones en el servidor, envíe las declaraciones a la terminal.
Si su comando original era
some_db_command "$backupsql"
entonces podrías reemplazar esto por
printf '%s\n' "$backupsql"
Si el script continúa haciendo otras cosas que pueden depender de la ejecución de esos comandos SQL, inserte un exit
antes de que eso suceda. Sólo le interesa ver los comandos SQL que se habrían enviado al servidor de la base de datos.