我有一个 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 命令感兴趣。