在bql语句中停止bash扩展*

时间:2013-06-18 17:29:39

标签: bash

我有删除声明delete * from table_name;。目前shell将其展开以列出当前目录中的所有现有文件。我如何逃避它,以便传递给sqlplus的字符串确实"删除*来自table_name"。我尝试了\* '*'\\*,但都没有。

确切的脚本是

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

2 个答案:

答案 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