如何将 PostgreSQL 结果插入 shell 变量
how to insert PostgreSQL result to a shell variable
我想在变量中设置所有这些语法
su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\""
CREATE DATABASE
所以我写了这个
res=$( su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\"" )
CREATE DATABASE
但是 $res 是空的
echo $res
我也试过添加“”,但没有成功。
如何插入
的结果
su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\""
到 shell 变量?
这是一个更通用的答案,但反引号 (`) 会将任何 shell 命令的结果放入变量中:
$ foo=`psql -d postgres -c "select 'Hello'"`
$ echo $foo
?column? ---------- Hello (1 row)
就是说,我很好奇为什么您想要 create database
命令的结果在 shell 变量中。我敢肯定这是有充分理由的,我只是永远不会想做这样的事情。
检查生成的退出状态有效:
MacBook-Air:~ root# res=$(su -l vao -c "/usr/local/Cellar/postgresql/9.6.1/bin/psql -c \"CREATE DATABASE graphite\" -d so")
MacBook-Air:~ root# echo $?
0
MacBook-Air:~ root# res=$(su -l vao -c "/usr/local/Cellar/postgresql/9.6.1/bin/psql -c \"CREATE DATABASE graphite\" -d so")
ERROR: database "graphite" already exists
MacBook-Air:~ root# echo $?
1
标准输出也显示:
MacBook-Air:~ root# echo $res
Timing is on. Pager usage is off. SET Time: 0.333 ms SET Time: 0.112 ms SET Time: 0.127 ms Time: 0.290 ms
我想在变量中设置所有这些语法
su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\""
CREATE DATABASE
所以我写了这个
res=$( su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\"" )
CREATE DATABASE
但是 $res 是空的
echo $res
我也试过添加“”,但没有成功。
如何插入
的结果su -l postgres -c "psql -c \"CREATE DATABASE graphite WITH OWNER graphite\""
到 shell 变量?
这是一个更通用的答案,但反引号 (`) 会将任何 shell 命令的结果放入变量中:
$ foo=`psql -d postgres -c "select 'Hello'"`
$ echo $foo
?column? ---------- Hello (1 row)
就是说,我很好奇为什么您想要 create database
命令的结果在 shell 变量中。我敢肯定这是有充分理由的,我只是永远不会想做这样的事情。
检查生成的退出状态有效:
MacBook-Air:~ root# res=$(su -l vao -c "/usr/local/Cellar/postgresql/9.6.1/bin/psql -c \"CREATE DATABASE graphite\" -d so")
MacBook-Air:~ root# echo $?
0
MacBook-Air:~ root# res=$(su -l vao -c "/usr/local/Cellar/postgresql/9.6.1/bin/psql -c \"CREATE DATABASE graphite\" -d so")
ERROR: database "graphite" already exists
MacBook-Air:~ root# echo $?
1
标准输出也显示:
MacBook-Air:~ root# echo $res
Timing is on. Pager usage is off. SET Time: 0.333 ms SET Time: 0.112 ms SET Time: 0.127 ms Time: 0.290 ms