我有删除声明delete * from table_name;
。目前shell将其展开以列出当前目录中的所有现有文件。我如何逃避它,以便传递给sqlplus的字符串确实"删除*来自table_name"。我尝试了\*
'*'
和\\*
,但都没有。
确切的脚本是
#!/bin/bash
table_name = $1
delete_sql= "delete * from $table_name;"
echo $delete_sql > abc.sql
答案 0 :(得分:5)
怎么样
echo "delete * from table_name" | sqlplus
或
echo "delete * from table_name" > mystatements.txt
sqlplus @mystatements.txt
在旁注中,您不需要在删除语句中指定* - 匹配行中的所有字段都将被删除。
答案 1 :(得分:3)
您只需引用变量(并修复=
符号周围的间距):
#!/bin/bash
table_name=$1
delete_sql="delete * from $table_name;"
echo "$delete_sql" > abc.sql