将变量从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>) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |