如何将bash变量传递到sql文件中

如何将bash变量传递到sql文件中,sql,bash,postgresql,psql,Sql,Bash,Postgresql,Psql,我有一个bash脚本来调用postgres中的select。我希望能够将一个变量从命令行传递到sql文件中 sh myscript.sh 1234 #!/bin/bash dbase_connect="psql -h server -U username dbase" file="/tmp/$fname.csv" sql="/home/user/sql_files/query.sql" sudo bash -c "$dbase_connect -c -q -A -F , -f $sql -o

我有一个bash脚本来调用postgres中的select。我希望能够将一个变量从命令行传递到sql文件中

sh myscript.sh 1234

#!/bin/bash
dbase_connect="psql -h server -U username dbase"
file="/tmp/$fname.csv"
sql="/home/user/sql_files/query.sql"

sudo bash -c "$dbase_connect -c -q -A -F , -f $sql -o $file"
查询可以简单到:

select name from table where id = $1;

但是我不知道如何将
$1
调用到sql文件中。实际查询要大得多,我更喜欢将其排除在bash查询之外,因为当作为单独的.sql文件调用时,它更易于维护。

您可以使用
sed
插入参数:

#!/bin/bash
dbase_connect="psql -h server -U username dbase"
file="/tmp/$fname.csv"
sql="/home/user/sql_files/query.sql"
tmp="home/user/sql_files/query.sql.tmp"
s="s/\$1/$1/g"
cat $sql | sed $s > $tmp

sudo bash -c "$dbase_connect -c -q -A -F , -f $tmp -o $file"
rm -f $tmp

谢谢工作完美,给了我一个整合另一个脚本的想法(以后维护更少)。