我有一个发出通知的 PostgreSQL 语句。我希望将此输出重定向到 bash 数组中。我尝试过以下方法:
declare -a MYARRAY
MYARRAY=( `psql -U $db_username -h $DATABASE_HOST $DATABASE_NAME -c \
"DO \\$\\$ DECLARE
mySite varchar;
myResult RECORD;
BEGIN
RAISE NOTICE 'current_site, folder, path';
FOR mySite IN SELECT name from public.app_info
LOOP
{Confidential Data here!}
LOOP
RAISE NOTICE '%,%,%', myResult.current_site, myResult.folder, myResult.path;
END LOOP;
END LOOP;
END\\$\\$"` )
echo "These are the files"
for i in ${MYARRAY[@]}; do
echo $i
done
当我运行脚本时,查询中的通知会打印到我的窗口中,但不会添加到数组中。我也尝试过使用变量而不是数组,但没有成功。
最佳答案
通知已打印到 stderr 中,因此请更改
END\\$\\$"` )
到 END\\$\\$"2>&1` )
但数组还将包含“NOTICE:”和“DO”等文本,因此您必须将它们过滤掉
关于bash - 将 PostgreSQL 通知重定向到 Bash 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49792912/