2

我有一个删除声明delete * from table_name;。目前 shell 将其扩展为列出当前目录中的所有现有文件。我怎样才能逃脱它,以便传递给 sqlplus 的字符串确实是“从 table_name 中删除 *”。我试过了\* '*'\\*但它们都不起作用。

确切的脚本是

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

2 回答 2

5

怎么样

echo "delete * from table_name" | sqlplus 

或者

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

附带说明一下,您不需要在删除语句中指定 * - 匹配行中的所有字段都将被删除。

于 2013-06-18T17:32:19.363 回答
3

您只需要引用变量(并固定=符号周围的间距):

#!/bin/bash
table_name=$1
delete_sql="delete * from $table_name;"
echo "$delete_sql" > abc.sql
于 2013-06-18T17:35:34.573 回答