2

削除ステートメントがありdelete * from table_name;ます。現在、シェルはそれを展開して、現在のディレクトリにあるすべての既存のファイルを一覧表示します。sqlplus に渡される文字列が実際に「delete * from 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

ちなみに、delete ステートメントで * を指定する必要はありません。一致する行のすべてのフィールドが削除されます。

于 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 に答える