我正在尝试使用shell自动删除数据库中的所有表。
注释掉的变量$ 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
答案 0 :(得分:1)
(主要编辑)
问题在于您使用引号。在您的代码中,由于您没有引用$command
,因此它会受到shell分词的影响。 $ login命令接收这些参数:"-e", "'drop", "table", "table_name'"
- 注意第二个和最后一个元素中的杂散单引号。
这样做:
command="drop table $table"
drop=$($login -e "$command")