如何在脚本中转义*



我正在尝试编写一个bash脚本,其中包含执行以下查询的函数:

query() {
cmd="mysql -N -B -u $user -p$password -h $host -e "$q;"" #2>&1";
eval $cmd
}

q="select * from mydatabase.mytable"

在调用查询时,*字符将所有内容弄乱并展开为当前目录的列表。

我怎样才能避免这种情况?函数应该接受任何有效的SQL语句。

使用set -f禁用globing似乎可以解决问题:

query(){
set -f
cmd="mysql -N -B -u $user -p$password -h $host -e "$q;"" #2>&1";
echo $cmd
eval $cmd
set +f
}

这是最好的方法吗?

最新更新