いくつかのデータベース ジョブを実行する 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 コマンドのみを確認する必要があります。