通过运行这行代码:
psql -c "\l" -p 54049
我得到以下结果:
我的问题有点笼统
1-如何在BASH中解析这样的表格
2-这种类型的表叫什么
3-任何学习BASH的培训教程都是艰难的
4-如何将此表解析为数组的数组,以便每一行都是一个数组,每个元素都作为列?
主要问题:我想将我的手动输入与此表进行比较,因此如果我的输入数据库名称存在于结果中,它将继续,否则它将再次出现。
这是不起作用的代码:
dbsList=`psql -c "\l" -p 54049 | awk '{ print $1 }'`
echo "Please enter a valid DB name you want to backup:"
read dbName
contains() {
[[ $1 =~ (^|[[:space:]])"$2"($|[[:space:]]) ]] && echo 0 || echo 1
}
contains dbsList dbName
while [ `contains dbsList dbName` -eq 1 ]
do
echo "Please enter a valid DB name you want to backup:"
read dbName
done
不解析\l
metacommand的输出,更好地使用select pg_database
例如:
-bash-4.2$ for i in $(psql -c "select datname from pg_database" -Xt); do echo "you can do logic against $i"; done;
you can do logic against template1
you can do logic against template0
you can do logic against postgres
并回答你的问题: