重定向sql查询将添加该目录中的所有文件

时间:2017-12-13 07:03:01

标签: sql bash

我有以下的shell脚本

query="SELECT * from [myDB.myTable]"
echo $(date +"%Y-%m-%d %H:%M:%S")'|'land'|'Failure'|||'twice'|'$query > test.log

当我在Unix PC的某个目录中运行时, test.log 显示结果如下

2017-12-13 06:54:03|land|Failure|||twice| SELECT temp1.txt test tmp.log tt.sh from [myDB.myTable]

实际上我希望将查询重定向到日志文件中,而不是打印该目录的所有文件名。

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

可怕的pathname expansion再次罢工!您可以将该文件名列表归因为在未加引号的表达式中使用*

echo "$(date +'%Y-%m-%d %H:%M:%S')'|'land'|'Failure'|||'twice'|'$query" > "test.log"
#    ^                                                                ^  

cat "test.log"
> 2017-12-13 06:54:03|land|Failure|||twice| SELECT * from [myDB.myTable]

答案 1 :(得分:0)

为完整的echo使用双引号,可以删除单引号:

echo "$(date +"%Y-%m-%d %H:%M:%S")|land|Failure|||twice|${query}" > test.log

我也在${query}中放置了勇敢的勇士,这不是解决问题的方法,而是未来脚本的好习惯。