Bash脚本评估字符串问题

时间:2012-08-11 02:43:36

标签: mysql bash shell terminal

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

(主要编辑)

问题在于您使用引号。在您的代码中,由于您没有引用$command,因此它会受到shell分词的影响。 $ login命令接收这些参数:"-e", "'drop", "table", "table_name'" - 注意第二个和最后一个元素中的杂散单引号。

这样做:

command="drop table $table"
drop=$($login -e "$command")