gpt4 book ai didi

bash - 解析 postgres 结果为 bash

转载 作者:行者123 更新时间:2023-11-29 14:36:47 26 4
gpt4 key购买 nike

通过运行这行代码:

psql -c "\l" -p 54049

我得到以下结果:

enter image description here

我的问题有点笼统 BASH

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 元命令的输出,最好使用 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

并回答你的问题:

  1. bash 不是为解析而设计的,(你可以做到,但问题太广泛了)
  2. 这不是一个表——它是选择查询的返回值
  3. 请从任何关于此的阅读开始,例如 http://tldp.orgpsql
  4. 太多无意义的工作,考虑上面的例子

关于bash - 解析 postgres 结果为 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com