我有一个 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` )
但数组还将包含诸如 注意: 和 DO 这样的文本,因此您必须过滤掉它们