加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

将变量从Bash传递给psql

发布时间:2020-12-15 21:01:31 所属栏目:安全 来源:网络整理
导读:将 Bash中的变量传递给psql命令时遇到了一些麻烦.无法找出在需要的地方放置引号或parantheses的位置 我基本上试图将今天的日期插入到PostGres表的日期列中 today=$(date +"%m-%d-%Y")echo $today#10-05-2015psql -h hostname -U admin -d db-p 5439 -c "INS
将 Bash中的变量传递给psql命令时遇到了一些麻烦.无法找出在需要的地方放置引号或parantheses的位置

我基本上试图将今天的日期插入到PostGres表的日期列中

today=$(date +"%m-%d-%Y")

echo $today
#10-05-2015

psql -h hostname -U admin -d db-p 5439 -c 
"INSERT INTO public.log_table (day,rowcount) VALUES ("$today",$rowcount)";

我试过今天打电话给$而没有引号和其他一些变化,但是不能让它通过我想要的,这是10-05-2015.相反,正在插入值-2010,这实际上是10减5减2015 …

解决方法

你需要逃避报价:

"INSERT INTO public.log_table (day,rowcount) VALUES ("$today",$rowcount)";

在没有转义它们的情况下,它们被shell解释为字符串的结尾.然后插入日期(因为shell将前一个字符串与此非引用字符串连接在一起),最后,在日期之后,shell会看到另一个SQL命令的字符串并与其他字符串连接.

所以psql接收的是

INSERT INTO public.log_table (day,rowcount) VALUES (10-05-2015,<rowcount_value>)

并且它将其视为整数,因此psql会解析您要插入整数-2010.

正确引用后,psql收到:

INSERT INTO public.log_table (day,rowcount) VALUES ("10-05-2015",<rowcount_value>)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读