在一个sh脚本上备份多个表

问题描述

我有一个脚本,可以在一行中备份多个表,如下所示:

/usr/local/pgsql/bin/pg_dump  --quote-all-identifiers --username=postgres -p 5432 -t schema.table1 -t schema.table2 -t schema.table3 -t schema.table4 -h localhost mydb | gzip -1 > file.dmp.gz

我创建了一个新的sh脚本,可以重新使用该命令,如下所示:

backup_table.sh

$TABLE=$1
$DESTINATION=$2

/usr/local/pgsql/bin/pg_dump  --quote-all-identifiers --username=postgres -p 5432 -t $TABLE -h localhost mydb | gzip -1 > $DESTINATION

如您所见,这仅适用于1个表,我不确定如何将多个表传递给sh脚本(-t table1 -t table2 -t table3等)

我可以使用数组,但是仍然不确定如何编写代码

谢谢!

解决方法

如果您愿意将DESTINATION作为第一个预期参数,那么类似的方法应该对您有用:

DESTINATION=$1
TABLES=`echo ${@:2}|sed "s/\s/ -t /g"`

/usr/local/pgsql/bin/pg_dump  --quote-all-identifiers --username=postgres -p 5432 -t $TABLES -h localhost mydb | gzip -1 > $DESTINATION