将要转储的表作为 bash 脚本中的选项转储 postgresql 数据库

taking tables to be dumped as options in bash script to take dump of postgresql database

我想转储 postgresql 数据库的特定 table。转储特定 tables 的命令是

pg_dump -h host -U username db_name -t table1 - t table2 -t table3 ... > /tmp/mydb.sql 

但我试图将 tables 作为 option argument 而 运行 bash 脚本。要转储的数量 table 不固定。我采用如下选项参数

#!/bin/bash
# Argument = -t test -r server -p password -v

usage()
{
cat << EOF
usage: [=12=] options

This script run the test1 or test2 over a machine.

OPTIONS:
   -h      Show this message
   -t      Table name
   -v      Verbose
EOF
}

TABLE=
VERBOSE=
while getopts “ht:v” OPTION
do
     case $OPTION in
         h)
             usage
             exit 1
             ;;
         t)
             TABLE=$OPTARG
             ;;
         v)
             VERBOSE=1
             ;;
         ?)
             usage
             exit
             ;;
     esac
done

if [[ -z $TABLE ]]
then
     usage
     exit 1
fi

如何将多个 table 名称作为 bash 脚本中的参数来获取那些 table 的转储并嵌入到 pg_dump 命令中?

因为您没有任何其他非可选参数,所以让这些成为表格。

tables=()
for table in "$@"; do
    tables+=(-t "$table")
done

pg_dump "${tables[@]}"