2013-06-18 43 views
2

我有一個刪除語句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

回答

3

你只需要引用變量(和修復周圍=標誌的間距):

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

如何

echo "delete * from table_name" | sqlplus 

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

在一個側面說明,你並不需要指定*在delete語句 - 匹配行中的所有字段都將被刪除。

+0

+1,表示*在刪除時不需要。 – devnull