1

シェルを使用してデータベースからすべてのテーブルを自動的に削除するスクリプトを作成しようとしています。

コメントアウトされた変数$dropは正常に機能しますが、テーブルで置換しようとすると

for table in $tables
do
    command="'drop table ${table}'"

    # drop=$(${login} -e 'drop table test') -- this works fine
    drop=$(${login} -e $command)
    echo $drop
    # echo -e "Removed table ${table}"
done
4

1 に答える 1

1

(主な編集)

問題は、引用符の使用にあります。コードでは、引用しないため$command、シェルによる単語分割の対象になります。$ loginコマンドは、次の引数を受け取ります。"-e", "'drop", "table", "table_name'"-2番目と最後の要素の漂遊一重引用符に注意してください。

これを行う:

command="drop table $table"
drop=$($login -e "$command")
于 2012-08-11T03:13:10.070 に答える