来自bash脚本的SQLITE:如何处理bash变量?

lpwwtiir  于 2023-05-29  发布在  SQLite
关注(0)|答案(1)|浏览(286)

我有下面的bash脚本,它执行一个SQL查询

#!/bin/sh                                                                                                                                                                                                                                                                                                                                                              

FILE=$2
sqlite3 $1 <<'END_SQL'                                                                                                                                                                                                                                                                                                                                                      
.headers on                                                                                                                                                                                                                                                                                                                                                                 
.mode csv                                                                                                                                                                                                                                                                                                                                                                   
.output $FILE                                                                                                                                                                                                                                                                                                                                                               
select * from results;                                                                                                                                                                                                                                                                                                                                                      
.output stdout                                                                                                                                                                                                                                                                                                                                                              
END_SQL

所以,我希望结果被发送到我用2美元传递的文件中。但是,它会将结果打印到名为$FILE的文件中。我该怎么解决?

czfnxgou

czfnxgou1#

要执行变量扩展,请不要将END_SQL引用起来。
但是要确保检查变量是否有SQL注入,例如

# Don't run this on the real database, it deletes all the data!
FILE='output.txt
DROP TABLE results;'
sqlite3 $1 <<END_SQL
.headers on
.mode csv
.output $FILE
select * from results; -- Error: no such table
END_SQL

相关问题