gpt4 book ai didi

linux - 如何修复 bash 脚本未完成 Postgres 命令的问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:11:55 25 4
gpt4 key购买 nike

脚本仅打开 Postgres,但此后不会处理任何命令。

#/bin/bash
filename='mac_addresses.txt'
filelines=`cat $filename`
echo Start
for line in $filelines ; do
psql pcoip_mc_db postgres
update endpoint set endpoint_group_id = 15 where mac_address='$filelines';
\q
done

预期结果是看到此脚本在 mac_addresses.txt 中逐行运行。文件,并在连接到 Postgres 后,在 mac_addresses.txt 中的每个 mac 地址上运行此命令。 :

update endpoint set endpoint_group_id = 15 where mac_address='$filelines';

最佳答案

问题是 update\q 不作为 psql 命令的输入处理,而是作为 shell 命令处理。您必须告诉 bash 这应该是 psql 的标准输入,例如使用“here document”:

#/bin/bash
filename='mac_addresses.txt'
filelines=`cat $filename`
echo Start
for line in $filelines ; do
psql pcoip_mc_db postgres <<EOF
update endpoint set endpoint_group_id = 15 where mac_address='$filelines';
EOF
done

警告:此代码仍然不安全并且容易受到 SQL 注入(inject)攻击。如果文件中的任何条目包含空格或单引号,您将会遇到错误,甚至更糟。

关于linux - 如何修复 bash 脚本未完成 Postgres 命令的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340055/

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