我有一个删除声明delete * from table_name;
。目前 shell 将其扩展为列出当前目录中的所有现有文件。我怎样才能逃脱它,以便传递给 sqlplus 的字符串确实是“从 table_name 中删除 *”。我试过了\*
'*'
,\\*
但它们都不起作用。
确切的脚本是
#!/bin/bash
table_name = $1
delete_sql= "delete * from $table_name;"
echo $delete_sql > abc.sql
我有一个删除声明delete * from table_name;
。目前 shell 将其扩展为列出当前目录中的所有现有文件。我怎样才能逃脱它,以便传递给 sqlplus 的字符串确实是“从 table_name 中删除 *”。我试过了\*
'*'
,\\*
但它们都不起作用。
确切的脚本是
#!/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
附带说明一下,您不需要在删除语句中指定 * - 匹配行中的所有字段都将被删除。
您只需要引用变量(并固定=
符号周围的间距):
#!/bin/bash
table_name=$1
delete_sql="delete * from $table_name;"
echo "$delete_sql" > abc.sql