我有以下的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]
实际上我希望将查询重定向到日志文件中,而不是打印该目录的所有文件名。
如何解决此问题?
答案 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}
中放置了勇敢的勇士,这不是解决问题的方法,而是未来脚本的好习惯。