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