在sql语句中停止扩展* *

问题描述:

我有一个删除语句delete * from table_name;。目前shell将其展开以列出当前目录中的所有现有文件。我该如何转义它,以便传递给sqlplus的字符串确实是“从表名删除*”。我试过\*'*'\\*,并且都没有工作。在sql语句中停止扩展* *

确切的脚本是

#!/bin/bash 
table_name = $1 
delete_sql= "delete * from $table_name;" 
echo $delete_sql > abc.sql 
+0

你是如何生成的声明?提供代码 – SheetJS

你只需要引用变量(和修复周围=标志的间距):

#!/bin/bash 
table_name=$1 
delete_sql="delete * from $table_name;" 
echo "$delete_sql" > abc.sql 

如何

echo "delete * from table_name" | sqlplus 

echo "delete * from table_name" > mystatements.txt 
sqlplus @mystatements.txt 

在一个侧面说明,你并不需要指定*在delete语句 - 匹配行中的所有字段都将被删除。

+0

+1,表示*在删除时不需要。 – devnull