简体   繁体   English

bash 脚本中的 Sql (postgres)

[英]Sql in bash script (postgres)

i have a command in bash script for rename base.我在 bash 脚本中有一个用于重命名 base 的命令。 It's work, example这是工作,例子

psql -U $User -t -A -q -c 'ALTER DATABASE "Old_Name" RENAME TO "New_Name"' psql -U $User -t -A -q -c 'ALTER DATABASE "Old_Name" RENAME TO "New_Name"'

But if i do this -但如果我这样做 -

O_Name='Old_Name' O_Name='Old_Name'

N_Name='New_Name' N_Name='New_Name'

psql -U $User -t -A -q -c 'ALTER DATABASE "$O_Name" RENAME TO "$N_Name"' psql -U $User -t -A -q -c 'ALTER DATABASE "$O_Name" RENAME TO "$N_Name"'

It's not work, i think sql get $O_Name not Old_Name.这是行不通的,我认为 sql 得到的是 $O_Name 而不是 Old_Name。 How to pass the value of a variable bash to sql?如何将变量bash的值传递给sql?

Single quotes don't allow for environment variable expansion.单引号不允许环境变量扩展。 Use double quotes instead (and escape the nested quotes).改用双引号(并转义嵌套的引号)。 Like,喜欢,

psql -U $User -t -A -q -c "ALTER DATABASE \"$O_Name\" RENAME TO \"$N_Name\""

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM