У меня есть скрипт bash, который выполняет некоторые задания базы данных. Части этого скрипта:
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
.
.
Прежде чем выполнить это, я хочу узнать, правильно ли размещены переменные в каждой строке. Возможно ли это?
Например, я хочу что-то вроде этого:
BACKUP DATABASE mydb1 TO /dbdata1/mtdb1Backup
/bin/db2 connect to mydb1
BACKUP DATABASE mydb1 TO /dbdata2/mtdb1Backup
/bin/db2 connect to mydb2
после того, как я проверю, что все правильно, я их запущу.
решение1
В вашем коде вы создаете оператор SQL или список операторов SQL, которые вы передадите серверу базы данных. Вместо вызова команды, которая выполнит операторы на сервере, выведите операторы на терминал.
Если ваша первоначальная команда была
some_db_command "$backupsql"
то вы могли бы заменить это на
printf '%s\n' "$backupsql"
Если скрипт затем продолжит делать другие вещи, которые могут зависеть от выполнения этих команд SQL, то вставьте exit
перед тем, как это произойдет. Вас интересуют только команды SQL, которые были бы отправлены на сервер базы данных.